redis各个版本发布的新特性-数据库-IT技术博客

redis各个版本发布的新特性

时间:2019-08-17 21:32:42 浏览: 字体: 放大 缩小


Redis借鉴了Linux操作系统对于版本号的命名规则: 版本号第二位如果是奇数, 则为非稳定版本(例如2.7、 2.9、 3.1) , 如果是偶数,则为稳定版本(例如2.6、 2.8、 3.0、 3.2) 。 当前奇数版本就是下一个稳定版本的开发版本, 例如2.9版本是3.0版本的开发版本。 所以我们在生产环境通常选取偶数版本的Redis, 如果对于某些新的特性想提前了解和使用, 可以选择最新的奇数版本。



1.Redis2.6

Redis2.6在2012年正式发布, 经历了17个版本, 到2.6.17版本, 相比于Redis2.4, 主要特性如下:

1) 服务端支持Lua脚本。

2) 去掉虚拟内存相关功能。

3) 放开对客户端连接数的硬编码限制。

4) 键的过期时间支持毫秒。

5) 从节点提供只读功能。

6) 两个新的位图命令: bitcount和bitop。

7) 增强了redis-benchmark的功能: 支持定制化的压测, CSV输出等功能。

8) 基于浮点数自增命令: incrbyfloat和hincrbyfloat。

9) redis-cli可以使用--eval参数实现Lua脚本执行。

10) shutdown命令增强。

11) info可以按照section输出, 并且添加了一些统计项。

12) 重构了大量的核心代码, 所有集群相关的代码都去掉了, cluster功能将会是3.0版本最大的亮点。

13) sort命令优化。


2.Redis2.8

Redis2.8在2013年11月22日正式发布, 经历了24个版本, 到2.8.24版本,相比于Redis2.6, 主要特性如下:

1) 添加部分主从复制的功能, 在一定程度上降低了由于网络问题, 造成频繁全量复制生成RDB对系统造成的压力。

2) 尝试性地支持IPv6。

3) 可以通过config set命令设置maxclients。

4) 可以用bind命令绑定多个IP地址。

5) Redis设置了明显的进程名, 方便使用ps命令查看系统进程。

6) config rewrite命令可以将config set持久化到Redis配置文件中。

7) 发布订阅添加了pubsub命令。

8) Redis Sentinel第二版, 相比于Redis2.6的Redis Sentinel, 此版本已经变成生产可用。


3.Redis3.0

Redis3.0在2015年4月1日正式发布, 截止到本书完成已经到3.0.7版本,相比于Redis2.8主要特性如下:

注意   Redis3.0最大的改动就是添加Redis的分布式实现Redis Cluster, 填补了Redis官方没有分布式实现的空白。 Redis Cluster经历了4年才正式发布也是有原因的, 具体可以参考Redis Cluster的开发日志(http://antirez.com/news/79) 。

1) Redis Cluster: Redis的官方分布式实现。

2) 全新的embedded string对象编码结果, 优化小对象内存访问, 在特定的工作负载下速度大幅提升。

3) lru算法大幅提升。

4) migrate连接缓存, 大幅提升键迁移的速度。

5) migrate命令两个新的参数copy和replace。

6) 新的client pause命令, 在指定时间内停止处理客户端请求。

7) bitcount命令性能提升。

8) config set设置maxmemory时候可以设置不同的单位(之前只能是字节) , 例如config set maxmemory1gb。

9) Redis日志小做调整: 日志中会反应当前实例的角色(master或者slave) 。

10) incr命令性能提升。


4.Redis3.2

Redis3.2在2016年5月6日正式发布, 相比于Redis3.0主要特征如下:

1) 添加GEO相关功能。

2) SDS在速度和节省空间上都做了优化。

3) 支持用upstart或者systemd管理Redis进程。

4) 新的List编码类型: quicklist。

5) 从节点读取过期数据保证一致性。

6) 添加了hstrlen命令。

7) 增强了debug命令, 支持了更多的参数。

8) Lua脚本功能增强。

9) 添加了Lua Debugger。

10) config set支持更多的配置参数。

11) 优化了Redis崩溃后的相关报告。

12) 新的RDB格式, 但是仍然兼容旧的RDB。

13) 加速RDB的加载速度。

14) spop命令支持个数参数。

15) cluster nodes命令得到加速。

16) Jemalloc更新到4.0.3版本。


5.Redis4.0

2016年12月2日,Redis 4.0.0-RC1发布了,可能出乎很多人的意料, Redis3.2之后的版本是4.0, 而不是3.4、 3.6、3.8。 一般这种重大版本号的升级也意味着软件或者工具本身发生了重大变革,下面列出Redis4.0的新特性:

1) 提供了模块系统, 方便第三方开发者拓展Redis的功能, 更多模块详见: http://redismodules.com。

2) PSYNC2.0: 优化了之前版本中, 主从节点切换必然引起全量复制的问题。

3) 提供了新的缓存剔除算法: LFU(Last Frequently Used) , 并对已有算法进行了优化。

4) 提供了非阻塞del和flushall/flushdb功能, 有效解决删除bigkey可能造成的Redis阻塞。

5) 提供了RDB-AOF混合持久化格式, 充分利用了AOF和RDB各自优势。

6) 提供memory命令, 实现对内存更为全面的监控统计。

7) 提供了交互数据库功能, 实现Redis内部数据库之间的数据置换。

8) Redis Cluster兼容NAT和Docker。



6.Redis5.0

Redis 5.0.0发布于2018年10月17日 CEST 星期三13:28:26,直接从到4.0之后发布到5.0

下面列出Redis 5中的新功能:

1)新的Stream数据类型。 https://redis.io/topics/streams-intro

2)新的Redis模块API:定时器,集群和字典API。

3) RDB现在存储LFU和LRU信息。

4)集群管理器从Ruby(redis-trib.rb)移植到C代码

   在redis-cli里面。查看`redis-cli --cluster help`获取更多信息。

5)新的有序集命令:ZPOPMIN / MAX和阻塞变体。

6)主动碎片整理版本2。

7)改进HyperLogLog实现中的网络。

8)更好的内存报告功能。

9)许多带子命令的命令现在都有一个HELP子命令。

10.当客户经常连接和断开连接时,性能更佳。

11.许多错误修复和其他随机改进。

12. Jemalloc升级到5.1版

13)客户端UNBLOCK和客户端ID。

14)添加了LOLWUT命令。 http://antirez.com/news/123

15)如果不是API向后兼容性,我们不再使用“slave”字。

16)网络层中的差异优化。

17) Lua的改进:

     - 更好地将Lua脚本传播到副本/ AOF。

     -  Lua脚本现在可以超时并在副本中进入-BUSY状态。

18)动态HZ以平衡空闲CPU使用率和响应性。

19) Redis核心在很多方面得到了重构和改进。


标签: Redis版本发布新特性