Redis 6在多个关键领域进行了重要改进,是Redis项目历史上最大的发布之一,因此这里我们仅列出此版本的主要特性:
- 模块块系统新增了一系列API,使得模块作者能够实现过去不可能完成的事情。现在可以在RDB文件中存储任意模块私有数据,钩住不同服务器事件,捕获并重写命令执行,基于键阻塞客户端等。
- 活动态过期周期已重写以实现更快地驱逐已过期的键。
- Redis现在支持所有通道上的SSL。
- ACL支持,你可以定义只能运行特定命令和/或只能访问特定键模式的用户。
- Redis现在支持一种名为RESP3的新协议,返回更具语义性的回复:使用此协议的新客户端仅从回复就能了解要返回给调用程序的类型。
- 服务器端现支持客户端缓存键值。此功能仍处于实验阶段,在接下来的候选版本中将有更多的变化,但你已经可以测试并在此阅读相关介绍:https://redis.io/topics/client-side-caching
- Redis现在可以选择性地使用线程处理I/O,使得在无法使用管道时单个实例每秒能服务的操作数量翻倍。
- 即使在副本上支持无盘复制:副本现在在某些条件下,用户可以配置,首次同步时直接从套接字节加载RDB到内存。
- Redis-benchmark现在支持Redis Cluster模式。
- SRANDMEMBER等命令有更好的分布。
- Redis-cli改进。
- Systemd支持重写。
- 一个Redis Cluster代理在此发布:https://github.com/artix75/redis-cluster-proxy
- 一个Disque模块在此发布:https://github.com/antirez/disque-module
从 5.0 迁移到 6.0
Redis 6.0 大体上是 5.0 的严格超集,您应该可以毫无问题地将应用程序从 5.0 升级到 6.0。然而,在 6.0 版本中引入了一些小型的非向后兼容变更,以下是变更列表:
SPOP <count>
命令在集合键不存在时不再返回 null。现在,如果集合键不存在或使用 0 作为参数调用时,它会返回空集合。这在技术上是一个修复,但它改变了旧的行为。
本文是译自Redis 6.0版本发布记录