雨翔河
首页
列表
关于
redis6.0 正式版的一些新特性之我见
2020-05-24 08:38
两年前redis5刚出来的时候写过一篇 [redis5.0正式版的一些新特性之我见](https://yuxianghe.net/blog/18) 这次的文章参考redis的github仓库更新记录: https://github.com/antirez/redis/blob/6.0/00-RELEASENOTES 这次的大版本可以说包含了很多企业化的功能特性,重量级,也可以说是最大的版本,也是参与人数最多的版本。 进入正题,从提交的记录来看,大的变化的确不少,上次redis5.0出来的时候我写了redis5.0的特性,这次的redis6.0的也还是蛮香的。 ## Redis 6.0.0 GA特性和变化: ##### Released Thu Apr 30 14:55:02 CEST 2020 1. 修正了XCLAIM AOF/replicas传播错误。 2. 客户端缓存:新的NOLOOP选项,以避免得到关于我们自己执行的更改的通知。 3. ACL GENPASS现在使用HMAC-SHA256,并有一个可选的“bits”参数。这意味着你可以使用它作为一个通用的“安全随机字符串”原语! 前段时间写过一篇文章,讲了为啥要使用HMAC的方式。可以看: https://my.oschina.net/110NotFound/blog/3206646 4. 集群 `SLOTS` 子命令内存优化。 5. 更有意义的副本的偏移量,使得部分重新同步做的更好。 (不禁想起来kafka的副本同步机制,0.0) 6. 优化了延迟备份的内存使用。 7. 更快的CRC64算法,使得RDB加载速度更快。 8. XINFO STREAM FULL,提供一个新的命令来获取整个流状态。 9. 看起来是多了一个命令,可以kill掉redis上的某用户, `CLIENT KILL USER <username>.` 这个我没去实际验证。 ## Redis 6.0 RC1 ##### Released Thu Dec 19 09:58:24 CEST 2019 1. 模块系统现在有了一些新的api,允许模块作者在过去做一些不可能的事情。可以在RDB文件中存储任意的模块私有数据,挂接不同的服务器事件,捕获和重写命令执行,在keys上阻塞客户端等等。 2. Redis活动过期周期被重写,以便更快地清除已经过期的键。现在,运行情况是可调整的。 题外话:过期键的删除真的要快点,不然会导致内存增长,误判redis内存不足,增加机器节点浪费硬件。 3. Redis现在支持所有通道上的SSL。 4. ACL支持,您可以定义只能运行某些命令和/或只能访问某些键模式的用户。 访问控制列表(ACL)是一种基于包过滤的访问控制技术,它可以根据设定的条件对接口上的数据包进行过滤,允许其通过或丢弃,redis6增加了acl功能模块极大的提高了它自身的安全性。详情的可以去参考看下Linux 的acl权限控制。 5. Redis现在支持一个名为RESP3的新协议,它可以返回更多语义上的响应:使用该协议的新客户端可以仅从响应中知道返回给调用程序的类型。 RESP3 是 Redis 将从 Redis 6 开始使用的新的客户端 - 服务器协议, https://github.com/antirez/resp3 例如,它具有映射,集合(元素的无序列表),返回数据的属性(可以使用辅助信息来增强回复)等概念。最终目标是使新的 Redis 客户端为我们减少工作量,也就是说,只需确定一组固定规则,即可将每种回复类型从 RESP3 转换为给定类型的客户端库编程语言。 在 Redis 的未来中,我看到了一些更智能的客户端,更好的处理连接和状态,并且显然在面向用户方面要简单得多,以至于理想 Redis 客户端就像: ``` redis.command("SET",key, value); ``` 6. 服务器端支持键值的客户端缓存。这个功能还处于试验阶段,在下一个候选版本中将会有更多的变化,但是你可以在这里测试和阅读: https://redis.io/topics/client-side-caching 7. Redis现在可以有选择地使用线程来处理I/O,当不能使用pipelining处理时,允许在单个实例中每秒可以执行两倍的操作。 8. 现在甚至在副本上也支持无磁盘复制:在用户可以配置的某些条件下,副本现在能够在第一次同步中直接从套接字加载RDB到内存。 9. Redis-benchmark现在支持Redis集群模式。 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序) 10. SRANDMEMBER和类似的命令有更好的分布,也就是有更好的随机性分布。 Redis Srandmember 命令用于返回集合中的一个随机元素。 11. Redis-cli改进,没说具体改进了啥。。。 12. Systemd支持重写。 13. 一个Redis集群代理在这个release发布: redis的redis-cluster-proxy实现了redis cluster集群节点的代理(屏蔽),客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群。 具体的可以看这个: https://github.com/artix75/redis-cluster-proxy 14. 一个disque模块在这个release发布: https://github.com/antirez/disque-module Disque简单的解释就是用redis来实现的一个更强大的消息队列的模块。 ## Redis 6.0 RC2 特性和变化: ##### Released Thu Mar 05 15:40:53 CET 2020 1. acl权限控制。 2. 重新设计客户端缓存。现在使用的是keys而不是缓存槽。 3. 客户端缓存:广播模式实现。 4. 客户端缓存:实现OPTIN/OPTOUT模式。 5. 删除用于在无持久化实例中复制的RDB文件(配置选项)。 ## Redis 6.0-rc3 特性和变化: ##### Released Tue Mar 31 17:42:39 CEST 2020 1. 有一个紧急更新: SSL实现中引入的连接管理错误很容易使Redis崩溃,修复了由于对SSL和连接代码进行重构而导致的崩溃。 2. 阻塞命令可以做到很精确超时操作,新的超时时间存储在基数树(radix tree)中,并按过期时间排序。 3. 修复了在调整事件循环时由于配置maxclients而导致的罕见崩溃。 4. 修复部分重新同步成功后的systemd就绪问题。 5. Redis-cli要求在启动时提示使用密码模式(为了额外的安全)。 6. 在Sentinel中实现新的ACL样式的认证。 7.等等其他一些bug和优化。 ## Redis 6.0-rc4 特性和变化: ##### Released Thu Apr 16 16:10:35 CEST 2020 1. 在有大量的客户端的时候,`INFO` 命令的运行速度提高了很多。 2. 所有的阻塞命令都得到了极大的加速:现在同一个key上的阻塞是O(1)而不是O(N)。 3. 陈旧的副本现在允许 `MULTI/EXEC` 4. 新命令: `LCS` (最长公共子序列)。 5. 添加一个新的配置使 `DEL` 类似于 `UNLINK` 。 5. RDB加载速度优化。
类型:工作
标签:redis,6.0
Copyright © 雨翔河
我与我周旋久
独孤影
开源实验室