Redis4.0新特性

在12月初,redis发布了4.0-rc1。其中做了很多新特性的介绍。本文就来简单说下有哪些东西。

不过在没过几天之后又发布了redis 4.0-rc2,做了很多紧急修复。不过本来也不是正式版,问题很多也很正常。大家可以自己下载来玩玩,不要用于生产环境。

新特性如下:

模块系统

这个可以说是redis4.0最大的一个变化了。它可以让用户自己编写redis代码去扩展redis功能。可以实现自己的数据结构和相关的功能接口。

作者自己就通过这个模块系统做了神经网络数据模型。也有很多人通过这个系统开发了限速系统、索引系统等。

这个功能给redis带来了无限的可能性,让redis不只是单纯的k-v存储了。

其实优酷有个团队自己本身也有对redis进行封装,也就是做了这样的事情。现在想想,redis本身提供了支持,提供了高层api,这样的实现性能等方面一定会有很大提升。

改进主从复制PSYNC2.0

在之前redis的复制,一种是全量复制,也就是在redis从服务器宕机之后,重连需要全量复制,性能很差。

后来引入了PSYNC进行部分赋值。主从会维护一个偏移量,当从宕机之后,再启动的时候可以进行部分复制就好了。

4.0 中对PSYNC进行了改进,引入了 tag 标签,对于每次复制,都由 标签+偏移量 来定义,并存储在RDB文件中,这样,各个slave中都记录了标签和偏移量,相当于互相之间都认识了,当某一个slave变为master之后,还可以通过 标签+偏移量 来使用 PSYNC 进行部分重新复制。

缓存回收的优化

redis 4.0 对现有的回收策略进行了优化,使其更加健壮、快速、精准。

同时还引入了新的回收策略LFU(Least Frequently Used),对最不常用的缓存数据进行清理。

非阻塞删除UNLINK

之前删除键,使用DEL命令,当键比较大的时候,性能会比较差,而且是单线程阻塞,导致其他线程的执行可能超时。redis4.0新增了UNLINK命令来异步删除,先删除键的引用,然后后台启用新的线程去删除键。

同样,FLUSHALL和FLUSHDB也增加了ASYNC参数去异步操作。

新的内存监控命令

MEMORY有更多的参数,可以监控内存数据。

查看某个key的内存使用、查看内存使用细节、申请释放内存、深入查看内存分配的内部状态。

具体可以通过MEMORY HELP查看。

Redis 集群对 NAT / Docker 的支持

这个可以在redis.conf文件中配置,里面也有详细的介绍。

优化

redis现在可以是用更少的内存存储以往相同的数据。

另外还有很多小的优化和特性,具体看这里

模块系统应该是这个版本最大的特性了,当然,由于刚出来,问题也很多。所以再次提醒大家玩玩就好。

本文原创于赵伊凡BLOG转载注明出处。

©原创文章,转载请注明来源: 赵伊凡's Blog
©本文链接地址: Redis4.0新特性

发表评论

电子邮件地址不会被公开。 必填项已用*标注