云栖号资讯:【点击查看更多行业资讯】
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!
Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。
所以在使用此版本之前,建议各位开发者先进行深入的测试再考虑投产,毕竟生产坏境无小事。好了,回到本文的重点,接下来我们来重点看下 Redis 6.0.1 给我们带来了那些新功能。
所以在使用此版本之前,建议各位开发者先进行深入的测试再考虑投产,毕竟生产坏境无小事。好了,回到本文的重点,接下来我们来重点看下 Redis 6.0.1 给我们带来了那些新功能。
Redis 新功能介绍
Redis 6 的更新日志,主要包含以下五部分的内容:
1.Redis 6.0-RC1 版新功能介绍;
2.Redis 6.0-RC2 版新功能介绍;
3.Redis 6.0-RC3 版新功能介绍;
4.Redis 6.0-RC4 版新功能介绍;
5.Redis 6.0.0 GA 版新功能介绍。
除了以上这些版本的更新日志外,还有 6.0.1 正式版的更新日志,不过这个正式版的发布时间只比 Redis 6.0.0 GA 晚了两天,因此只修复了一些 bug,所以我们只需要看以上五个日志即可。
1.Redis 6.0-rc1 更新日志
官方更新日志如下:
此版本新增的内容最大,如下列表所示:
- 众多新模块(modules)API
- 更好的过期循环(expire cycle)
- SSL
- ACLs 权限控制
- RESP3 协议
- 客户端缓存(Client side caching)
- 多线程 IO(Threaded I/O)
- 无盘复制副本(Diskless replication on replicas)
- Redis-benchmark 的集群支持和 redis-cli 优化
- 重写 Systemd 支持(Systemd support rewrite)
- Redis 集群代理与 Redis 6 一同发布(但在不同的 repo)
- Disque 模块与 Redis 6 一同发布
2.Redis 6.0-rc2 更新日志
Redis 6 RC2 带来了许多修复和新功能,尤其是客户端的缓存功能,此版本的重大更改如下列表。
- ACL LOG:记录拒绝的命令,密钥访问和身份验证。
- 重新设计了客户端缓存。现在,我们使用密钥而不是缓存插槽。
- 客户端缓存:已实现广播模式。
- 客户端缓存:已实现 OPTIN/OPTOUT 模式。
- 删除用于在非持久性实例中进行复制的 RDB 文件(可选)。
- 修复程序(仅选定的修复程序,请参阅所有修复程序的提交):
- 在边缘情况下对流的不同修复。
- 修正由于 RESP3 更改而导致重复的 CLIENT SETNAME 答复。
- 修正因新的有效到期除以零而导致的崩溃。
- 避免将哨兵更改提升为自己的副本。
- 修复了 KEYS 命令中以 * 开头,后跟 x00 的错误。
- 线程 I/O:现在也使用主线程来执行 I/O。
- 对模块API进行了许多修复,而在下一个RC中还会有更多修复。
- 如果字符串中间包含 0,则 ld2string 应该失败。
- 使 Redis 测试更可靠。
3.Redis 6.0-rc3 更新日志
- 这个版本主要是修复了一些 bug,如下列表所示:
- 修复了由于重构 SSL 而导致的连接代码崩溃。
- 用于阻止命令的精确超时。现在超时已达到 HZ 分辨率,无论连接的 clinet 数量如何。新超时存储在基数树中并按到期时间排序。
- 修复了由于 CONFIG maxclients 而调整事件循环大小时发生的罕见崩溃。
- 修正部分重新同步成功后的 systemd 准备情况。
- Redis-cli 询问密码模式将在启动时提示(以提高安全性)。
- 键空间通知已添加到 MIGRATE/RESTORE。
- 修复了线程 I/O 错误。
- 在 Sentinel 中实现新的 ACL 样式 AUTH。
- 使 'requirepass' 与 Redis<=5 更向后兼容。
- ACL:如果默认用户关闭,则将其视为禁用状态,而不管其是否为“ nopass”。
- 修复了在 Redis 群集中升级实例时可能出现的不一致问题
- READONLY 错误后中止事务。
- 对模块 API 的许多不同修复。
- 添加了 BITFIELD_RO 以在只读副本上调用该命令。
- PSYNC2:有意义的偏移量实现。允许断开连接的主机仍在向副本发送 PING,以便能够成功 PSYNC 以增量方式传递给新的从站,从而丢弃了仅由 PING 组成的复制积压。
- 修正 Lua 脚本处于繁忙状态时流水线的 MULTI/EXEC。
- 重新修复模块中的传播 API,在其他更改后再次中断。
4.Redis 6.0-rc4 更新日志
此版本主要新增的内容如下:
- 提高了大量客户端连接时使用 INFO 命令的查询速度。
- 在所有阻止命令上都大大加快了速度:现在可以阻止在同一键上是 O(1)而不是 O(N)。
- 陈旧的副本现在允许 MULTI/EXEC。
- 新命令:LCS(最长公共子序列)。
- 添加新配置以使 DEL 像 UNLINK。
- RDB 加载加速。
- 修复了许多错误。
5.Redis 6.0.0 GA 更新日志
此日志更新的主要内容如下:
- XCLAIM AOF/replicas 传播已修复。
- 客户端缓存:新的 NOLOOP 选项以避免收到有关自己执行的更改。
- ACL GENPASS 现在使用 HMAC-SHA256,并具有一个可选的“位”参数。这意味着您可以将其用作通用的“安全随机字符串”原始!
- 群集“SLOTS”子命令的内存优化。
- LCS 命令现在是 STRALGO 的子命令。
- 副本的有意义的偏移量。更成功的部分重新同步。
- 优化延迟回复的内存使用。
- 更快的 CRC64 法可更快地加载 RDB。
- XINFO STREAM FULL,一个新的子命令,用于获取整个流状态。
- CLIENT KILL USER <用户名>。
- MIGRATE AUTH2 选项,用于 ACL 样式身份验证支持。
- 修正了一些其他错误。
综合以上所有版本的更新日志我们发现,这次 Redis 6.0 带来的主要功能是:
- 提供了众多的新模块(modules)API
- 提供了客户端缓存功能
- 多线程 I/O 能力
- 提升了 RDB 日志的加载速度
- 修改了若干 bug 和一些优化
其中多线程 I/O 能力是我们最关注的功能了,有人用它和单线程的版本做个一个性能对比,如下图所示:
(注:图片来源于 iTushou.com)
从以上结果可以看到 GET/SET 命令在多线程版本中的性能相比单线程已经翻倍了。
总体来说,此次 Redis 6.0 带给我们的功能还是很大并且很实用的,只是版本改动太大,我们需要等待时间的验证和大量的测试之后才建议上线至生产环境。
【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK
原文发布时间:2020-05-03
本文作者:Java中文社群
本文来自:“掘金”,了解相关信息可以关注“掘金”