【Redis】Redis5.0的一些新特性

摘要:
当我们在Redis中保存一个密钥时,Redis会为该密钥分配一个存储空间,但当该密钥被删除时,Redi不会立即回收被删除的密钥所占用的空间。下图显示,Redis5在Redis4的基础上改进了内存碎片自动清理功能,现在该功能已经成熟。

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文档所说

  【Redis】Redis5.0的一些新特性第1张

  redis5是在redis4的基础上将内存碎片自动清理功能进行了完善,现在该功能已经成熟。

  那么这个功能有如下作用:

    1.在redis运行期间自动进行内存碎片清理,可以实时释放内存空间。

    2.通过内存报告来了解整个系统的内存使用情况。

    在redis配置文件中查看内存碎片控制相关参数

    【Redis】Redis5.0的一些新特性第2张

    参数说明:

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

免责声明:文章转载自《【Redis】Redis5.0的一些新特性》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇5款vue前端UI框架解决css设置背景透明,文字不透明下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET、NET Framewor以及.NET Core的关系(二)

什么是CLR,.NET虚拟机? 实际上,.NET不仅提供了自动内存管理的支持,他还提供了一些列的如类型安全、应用程序域、异常机制等支持,这些 都被统称为CLR公共语言运行库。 CLR是.NET类型系统的基础,所有的.NET技术都是建立在此之上,熟悉它可以帮助我们更好的理解框架组件的核心、原理。在我们执行托管代码之前,总会先运行这些运行库代码,通过运行库的代...

RedisTemplate

Spring Boot中Jedis几个api返回值的确认 @RequestMapping("/del/{key}") public String del(@PathVariable("key") String key) { try { //键不存在时,也不会抛异常 re...

windows下redis报错redis-server.exe已停止工作,redis的rdb持久化异常EXCEPTION_ACCESS_VIOLATION

问题1: windows下启动redis过一会儿就会弹出redis-server.exe已停止工作: 原因: 因为之前的系统是32位的,安装使用的也是32位的redis。后来重装系统为64位的,再使用之前32为的redis就会出现这种情况。 应该是与系统位数不兼容导致的。重新下载64位的redis使用就正常了。 解决方法: 重新下载64位的redis。...

redis集群搭建及一些问题

redis 1、简化版redis (本套Redis集群为简化版安装部署,只需解压至普通用户家目录下或者任意目录,解压后修改脚本,执行脚本后即可使用。) 注意,此版本需要在redis配置文件中添加 protected-mode no,确认添加完成后再启动服务。 1、单机部署 1.新建普通用户,将压缩包解压到家目录下。 tar zxf rediscluste...

HBase性能调优

配置优化 zookeeper.session.timeout默认值:3分钟(180000ms)说明:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的Regio...

【PHP】你使用过redis做异步队列么,是怎么用的?有什么缺点?

Redis设计主要是用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。 它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列; 另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可; Redis能做消息队列还得益于其list对象blpop brpop接口以及P...