【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版本。

原文地址:https://www.cnblogs.com/songgj/p/10358483.html