上下文:

      Redis 4.0 的RC终于出来了, 看了redis官方及antirez的博客都有提到4.0的各种新功能,对我来说是相当有吸引力的 。 

估计有人好奇现在不是才redis 3 .x么, 怎么直接干到redis 4.0 大版本了,据antirez说, redis 3.x 主要是集群功能, redis 4.0 是个全新的大跃进 ( 当然我自己加工了下 ,哈哈)  。 

      另外蛋疼的找了台大内存的服务器,使用以前的golang redis压力测试脚本,  综合测了下redis各数据结构的读写性能,  结果跟现在的redis 3.4 没啥差异的,看来4.0 真的就是功能上的功能。

该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新.   

http://xiaorui.cc/?p=4047


我们这里可以简单说下 redis 4.0 的新功能:   

1.   自定义扩展redis的模块,  当然相比 redis lua脚本来说,还是有些学习成本的…

2.   psync2 他的好处在于 redis 主从切换后,不需要重新进行 重新fullsync同步,只需要部分同步,有点类似binlog那种.  具体实现还没看,阿里自己是通过timestamp时间戳实现的.

3.   memory 指令可以估算内容大小

4.   非数据命令的异步执行,我们知道redis处理请求是单线程的,执行数据偏大的flush及del会阻塞的,redis 4.0 加了异步操作的功能…. 很好奇他的实现.

等等 …


    我自己最关注Redis 4.0 新版加入了自定义模块开发,其实以前在unstable的版本时 redis 就支持社区的自定义模块了, 只是一直游离在外,很多人不关注不知道而已。  Redis 开放自定义模块是大势所趋呀,  我们只需要按照扩展的样例代码撸就可以了,不用细心琢磨redis那内部的密集代码了。 

在redis 2.x的时候,作者加入了lua的解释器,但因为种种的安全限制,只能用那固定几个库包,但如果是应对频繁网络IO的场景, redis lua 绝逼是够用了…   有兴趣可以看看. 

http://xiaorui.cc/2016/03/27/%E8%AF%A6%E8%A7%A3python%E8%B0%83%E7%94%A8redis-lua%E5%86%85%E5%B5%8C%E8%84%9A%E6%9C%AC%E7%9A%84%E9%AB%98%E7%BA%A7%E7%94%A8%E6%B3%95/


首先我们要安装redis 4.0 rc 新版.    antirez说过,在3.x版本中不会加入自定义模块加载的.

下载第三方的Redis modules模块,make编译


上面编译完了后,在src下是有一堆动态链接库so 文件的, 然后我们修改redis.conf的配置, 加入这些so文件。

Redis模块源码在这里.   https://github.com/RedisLabsModules/redex  ,   这名字有点意思哈….     redex  vs redis  ? 

redisEx moudules的扩展基本是 在redis本身数据结构基础上做的调整 .


我们看下RedisEx对 zset的相关调整,比如里面的zpop 和  zrevpop  , 一看这名字我觉得大家就能感觉出来他是干嘛的吧?  

redis 本身的zset 是没有pop命令的,如果你想获取并删除,那么就只能 zrange and zrem .   zpop 是帮你pop出来一个最小score的数据,zrevpop 反之.


Redis set里多了一个 msismember的命令扩展,是个sismember的多扩展 .  用来判断多个集合里是否含有某个元素, 符合一个条件加 +1  , 如果返回 2 ,那么就是两个集合都含有这个元素.

Reids Msismember 命令源代码如下 :


通过上面几个redis扩展源码我们发现,基本都是多个命令合并成一个函数,对于客户端来说节省了网络io的开销,又保证了原子性。


分享个Dvir Volk 的redis 模块开发视频分享,我看了好几遍,受益匪浅,就差动手去开发了…

https://www.youtube.com/watch?v=bQ9MyImCYqc



打个小样, 这两天在发力写个可自增 zset ,敬请关注呀.

END.



对Python及运维开发感兴趣的朋友可以加QQ群 : 478476595 !!!
{ 2000人qq大群内有各厂大牛,常组织线上分享及沙龙,对高性能及分布式场景感兴趣同学欢迎加入该QQ群 }

另外如果大家觉得文章对你有些作用!   帮忙点击广告. 一来能刺激我写博客的欲望,二来好维护云主机的费用.
如果想赏钱,可以用微信扫描下面的二维码. 另外再次标注博客原地址  xiaorui.cc  ……   感谢!
暂无相关产品