【Redis】Redis5.0的一些新特性
redis5.0总共增加了12项新特性,如下:
1.新增加的Stream(流)数据类型,这样redis就有了6大数据类型,另外五种是String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sorted set有序集合)。它弥补了其它5种数据类型不能实现的功能,比如List数据类型只能先进先出,或者后进先出,不能从中间去数据,但是Stream可以实现。
1)创建Stream
命令:XADD
用法:XADD key ID field string (id可以自定义)
实例
127.0.0.1:6379> XADD key1 * month month_value #*代表默认id "1563893367304-0" #返回值说明:前面是UNIX毫秒时间戳 后面是序列号 127.0.0.1:6379> XADD key2 0-1 car car_value #自定义ID为 0-1 "0-1"
2) 查看Stream长度
命令:XLEN 返回stream中元素的个数
用法:XLEN key
127.0.0.1:6379> XLEN key1 (integer) 1
Stream 详情介绍 : http://www.redis.cn/topics/streams-intro.html
2.新的Redis模块api : Times and Cluster api,是一个抽象的集群消息总线,用于方便开发分布式系统。
3.RDB(redis datebase)现在用于存储 LFU(最近最少使用淘汰算法) 和 LRU(最近不经常使用淘汰算法)元数据信息。
4.集群管理器从ruby(redis-trib.rb)移植到c代码。以前创建集群时候需要通过ruby脚本来创建,现在用c代码重新编写,不用在额外按照ruby了。
5.新增加有序集合的sorted set4个命令:ZPOPMIN ,ZPOPMAX和它们的阻塞变种。
6.主动内存碎片整理功能version2版本,依赖于Jemalloc内存分配器。
7.增强HyperLogLog实现,这个功能是估算集合基数,redis5优化这个算法来节省空间。
8.更好的内存统计报告(碎片整理和内存报告)。
当我们在redis里存一个key时候,redis会给这个key分配一个存储空间,但是当把这个key删了,redis是不会立即回收这个已经删除key所占用的空间。因此如果反复增加删除key的话,会产生很多内存碎片。这就会影响之后申请大块连续的内存空间,所以进行内存碎片整理很有必要。
在redis4点时候已经有自动整理内存碎片的功能了,不过那时候功能还属于实验阶段。下图是redis4文档所说
redis5是在redis4的基础上将内存碎片自动清理功能进行了完善,现在该功能已经成熟。
那么这个功能有如下作用:
1.在redis运行期间自动进行内存碎片清理,可以实时释放内存空间。
2.通过内存报告来了解整个系统的内存使用情况。
在redis配置文件中查看内存碎片控制相关参数
参数说明:
1) activedefrag:内存碎片功能启动配置项,当为yes就表示开启该功能。
2)active-defrag-ignore-bytes:当内存浪费小于100M就忽略,大于100M就启动内存碎片整理,这个值可以设置的。
3)active-defrag-threshold-lower:当内存浪费小于10%就暂时忽略,大于10%就启动内存碎片整理,这个值可以设置的。
9.许多带有子命令的命令现在都有一个help子命令。
10.客户端断开和连接时候性能更好。
11.错误修复和改进。
12.Jemalloc升级到5.1版本。