Redis 5主要专注于几个重要功能。
相比之下Redis 4非常非常专注于操作类型,Redis 5的变化大多是面向用户的。
即在现有的基础上增加新的数据类型和操作类型。
以下是此版本的主要功能:
1、新的流数据类型(Stream data type)
2、新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs)
3、RDB 增加 LFU 和 LRU 信息
4、集群管理器从 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 语言代码
5、新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)
6、升级 Active defragmentation 至 v2 版本
7、增强 HyperLogLog 的实现
8、更好的内存统计报告
9、许多包含子命令的命令现在都有一个 HELP 子命令
10、客户端频繁连接和断开连接时,性能表现更好
11、许多错误修复和其他方面的改进
12、升级 Jemalloc 至 5.1 版本
13、引入 CLIENT UNBLOCK 和 CLIENT ID
14、新增 LOLWUT 命令
15、在不存在需要保持向后兼容性的地方,弃用 "slave" 术语
16、网络层中的差异优化
17、Lua 相关的改进
18、引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性
19、对 Redis 核心代码进行了重构并在许多方面进行了改进
重量级特性——Stream
Redis Stream本质上是个时序数据结构,具有如下特点:
1.每条记录是结构化、可扩展的对
2.每条记录在日志中有唯一标识,标识中包含了时间戳信息,单调递增
3.可以根据需要自动清理历史记录
4.保存在内存中,支持持久化
底层是修改版的radix tree,每个node存储了一个listpack。
listpack是一块连续的内存block,用于序列化msg entry及相关元信息,如msg ID,使用了多种编码,用于节省内存,是ziplist的升级版。
如果XADD每次添加的对中的field是一样的,那么field不会重复存储。
内存友好,对于简单的十几~几十字节的msg,100MB内存可以存储数百万个。
listpack在内存和disk上的存储结构是一样的,所以stream数据在做RDB时效率非常高,0.3s,500w entries。
Redis Stream使用演示
Redis Stream使用场景 可用作时通信等,大数据分析,异地数据备份
客户端可以平滑扩展,提高处理能力
感谢这个版本的相关用户和开发者。
开发组接下来会发布更多的RC版本,直到已经完全没问题。
开发组时没有收到有关严重问题的报告。
从4.0版本迁移到5.0版本的注意事项:
Redis 4.0大多是5.0的严格子集,应用程序从4.0升级到5.0通常不会碰见问题。
以下是5.0版本中引入的非后向兼容更改:
· redis-cli现在实现了集群管理工具。 我们仍然在维护旧的redis-trib,但是新的修复只会在redis-cli中实现。有关更多信息,请参阅`redis-cli —cluster help`。
· RDB格式已更改。 Redis 5.0能够读取4.0(和所有的过去的版本)文件,反之则不能。
· 某些日志格式和语句在Redis 5.0中不同。
相关阅读 >>
更多相关阅读请进入《Redis》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。