博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis修改的源代码zincrby,hincrby命令
阅读量:4348 次
发布时间:2019-06-07

本文共 1162 字,大约阅读时间需要 3 分钟。

在项目中大量使用zincrby命令。究其原因是统计一些统计指标的日志值,和需要返回到顺序topn。

通常情况下,。调用一次的指示器zincrby(zincrby default:type 1 typeA) 它将能够正常工作。

情况是因为日志生成的太快,redis cpu利用率常常100%。并且还丢数据。

能否够一次性添加多次指标的累计值。比方zincrby default:type 1 typeA 1 typeB 1 typeC 。

。。

,这样将多次通信压缩到一次通信中,肯定能提高处理能力。

无奈 zincrby仅仅支持4个參数,redis官方文档上写的清楚:

ZINCRBY key increment member

所以,想到了改动redis(2.4.17)源代码来实现我自己的功能。

打开redis.c源代码文件能够到 redis的支持的命令表。 部分内容例如以下,
struct redisCommand readonlyCommandTable[] = {
   {"get",getCommand,2,0,NULL,1,1,1},
    {"set",setCommand,3,REDIS_CMD_DENYOOM,NULL,0,0,0},
    {"setnx",setnxCommand,3,REDIS_CMD_DENYOOM,NULL,0,0,0},
    {"setex",setexCommand,4,REDIS_CMD_DENYOOM,NULL,0,0,0},
    {"append",appendCommand,3,REDIS_CMD_DENYOOM,NULL,1,1,1},
    {"strlen",strlenCommand,2,0,NULL,1,1,1},
    。。。
    {"zincrby",zincrbyCommand,4,REDIS_CMD_DENYOOM,NULL,1,1,1}
}
这个版本号和2.6以上版本号命令參数有不同,可是前几个參数都是一致的,第一个表示命令keyword。第二个表示函数名。第三个表示输入參数个数,正数表示參数数仅仅能等于,负数表示參数个数至少等于。
因为zincrby命令指定的參数是4,看了一下兴许的实现代码,发现里面当參数大于4的时候也进行了处理。于是将4改为-4,然后make,进行測试。
 {"zincrby",zincrbyCommand,-4,REDIS_CMD_DENYOOM,NULL,1,1,1}
执行例如以下:
事实上源代码改动非常easy,就改动了一个參数,其它在不变。而原本以为非常差,只有目的达到。

版权声明:本文博主原创文章,博客,未经同意不得转载。

转载于:https://www.cnblogs.com/mengfanrong/p/4826444.html

你可能感兴趣的文章
阶段3 3.SpringMVC·_07.SSM整合案例_02.ssm整合之搭建环境
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第1节零基础快速入门SpringBoot2.0_3、快速创建SpringBoot应用之手工创建web应用...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-05 微服务调用方式之feign 实战 订单调用商品服务...
查看>>
UI基础--烟花动画
查看>>
Android dex分包方案
查看>>
ThreadLocal为什么要用WeakReference
查看>>
删除本地文件
查看>>
FOC实现概述
查看>>
gethostbyname与sockaddr_in的完美组合
查看>>
旋转变换(一)旋转矩阵
查看>>
thinkphp3.2.3 bug集锦
查看>>
C# 创建 读取 更新 XML文件
查看>>
KD树
查看>>
VsVim - Shortcut Key (快捷键)
查看>>
HDU5447 Good Numbers
查看>>
08.CXF发布WebService(Java项目)
查看>>