Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

这是我的第 56 篇原创文章


Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。

所以在使用此版本之前,建议各位开发者先进行深入的测试再考虑投产,毕竟生产坏境无小事。好了,回到本文的重点,接下来我们来重点看下 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 更新日志

官方更新日志如下:

Redis 6 improves Redis in a number of key areas and is one of the largest Redis releases in the history of the project, so here we'll list only the biggest features in this release:

  • The modules system now has a number of new APIs that allow module authors   to make things otherwise not possible in the past. It is possible to   store arbitrary module private data in RDB files, to hook on different   server events, capture and rewrite commands executions, block clients on   keys, and so forth.

  • The Redis active expire cycle was rewritten for much faster eviction of keys   that are already expired. Now the effort is tunable.

  • Redis now supports SSL on all channels.

  • ACL support, you can define users that can run only certain commands and/or   can only access only certain keys patterns.

  • Redis now supports a new protocol called RESP3, which returns more   semantical replies: new clients using this protocol can understand just   from the reply what type to return to the calling program.

  • There is server-side support for client-side caching of key values. This   feature is still experimental and will get more changes during the next   release candidates, but you can already test it and read about it here:   https://redis.io/topics/client-side-caching

  • Redis can now optionally use threads to handle I/O, allowing to serve   2 times as much operations per second in a single instance when   pipelining cannot be used.

  • Diskless replication is now supported even on replicas: a replica is now   able, under certain conditions the user can configure, to load the RDB   in the first synchronization directly from the socket to the memory.

  • Redis-benchmark now supports a Redis Cluster mode.

  • SRANDMEMBER and similar commands have a better distribution.

  • Redis-cli improvements.

  • Systemd support rewritten.

  • A Redis Cluster proxy was released here:   https://github.com/artix75/redis-cluster-proxy

  • A Disque module for Redis was released here:   https://github.com/antirez/disque-module

此版本新增的内容最大,如下列表所示:

  • 众多新模块(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 更新日志

Hi Redis users, Redis 6 is approaching and will be released 30th of April. New release candidates will be released at the end of March, then another one mid April, to finally reach the GA at the end of April.

Redis 6 RC2 brings many fixes and new things, especially in the area of client side caching. This is the list of big changes in this release. As usually you can find the full list of commits at the end:

New features and improvements:

  • ACL LOG: log denied commands, keys accesses and authentications.

  • Client side caching redesigned. Now we use keys not caching slots.

  • Client side caching: Broadcasting mode implemented.

  • Client side caching: OPTIN/OPTOUT modes implemented.

  • Remove RDB files used for replication in persistence-less instances (option).

Fixes (only selected ones, see commits for all the fixes):

  • Different fixes to streams in edge cases.

  • Fix duplicated CLIENT SETNAME reply because of RESP3 changes.

  • Fix crash due to new active expire division by zero.

  • Avoid sentinel changes promoted_slave to be its own replica.

  • Fix bug on KEYS command where pattern starts with * followed by \x00.

  • Threaded I/O: now the main thread is used as well to do I/O.

  • Many fixes to modules APIs, and more to come in the next RCs.

  • ld2string should fail if string contains \0 in the middle.

  • Make the Redis test more reliable.

  • Fix SPOP returning nil (see #4709). WARNING: API change.

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 更新日志

Dear users, this is a list of the major changes in this release, please check  the list of commits for detail:

  • Fix crash due to refactoring for SSL, for the connection code.

  • Precise timeouts for blocking commands. Now the timeouts have HZ   resolution regardless of the number of connected clinets. New timeouts   are stored in a radix tree and sorted by expire time.

  • Fix rare crash when resizing the event loop because of CONFIG maxclients.

  • Fix systemd readiness after successful partial resync.

  • Redis-cli ask password mode to be prompted at startup (for additional safety).

  • Keyspace notifications added to MIGRATE / RESTORE.

  • Threaded I/O bugs fixed.

  • Implement new ACL style AUTH in Sentinel.

  • Make 'requirepass' more backward compatible with Redis <= 5.

  • ACL: Handle default user as disabled if it's off regardless of "nopass".

  • Fix a potential inconsistency when upgrading an instance in Redis Cluster   and restarting it. The instance will act as a replica but will actually be   set as a master immediately. However the choice of what to do with already   expired keys, on loading, was made from the POV of replicas.

  • Abort transactions after -READONLY error.

  • Many different fixes to module APIs.

  • BITFIELD_RO added to call the command on read only replicas.

  • PSYNC2: meaningful offset implementation. Allow the disconnected master   that is still sending PINGs to replicas, to be able to successfully   PSYNC incrementally to new slaves, discarding the last part of the   replication backlog consisting only of PINGs.

  • Fix pipelined MULTI/EXEC during Lua scripts are in BUSY state.

  • Re-fix propagation API in modules, broken again after other changes.

这个版本主要是修复了一些 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 更新日志

Hi all, this the latest release candidate of Redis 6. This is likely to be very similar to what you'll see in Redis 6 GA. Please test it and report any issue :-)

Main changes in this release:

* Big INFO speedup when using a lot of of clients.     * Big speedup on all the blocking commands: now blocking       on the same key is O(1) instead of being O(N).     * Stale replicas now allow MULTI/EXEC.     * New command: LCS (Longest Common Subsequence).     * Add a new configuration to make DEL like UNLINK.     * RDB loading speedup.     * Many bugs fixed (see the commit messages at the end of this node)

此版本主要新增的内容如下:

  • 提高了大量客户端连接时使用 INFO 命令的查询速度。

  • 在所有阻止命令上都大大加快了速度:现在可以阻止在同一键上是 O(1)而不是 O(N)。

  • 陈旧的副本现在允许 MULTI/EXEC。

  • 新命令:LCS(最长公共子序列)。

  • 添加新配置以使 DEL 像 UNLINK。

  • RDB 加载加速。

  • 修复了许多错误。

5.Redis 6.0.0 GA 更新日志

Upgrade urgency CRITICAL: many bugs fixed compared to the last release                           candidate. Better to upgrade if you see things                           affecting your environment in the changelog.

Hi all, finally we have Redis 6.0.0 GA! Enjoy this new Redis release. Most of the documentation was updated today so that you can likely find what you are looking for about the new features at redis.io. This is the list of what changed compared to the previoius release candidate:

  • XCLAIM AOF/replicas propagation fixed.

  • Client side caching: new NOLOOP option to avoid getting notified about   changes performed by ourselves.

  • ACL GENPASS now uses HMAC-SHA256 and have an optional "bits" argument.   It means you can use it as a general purpose "secure random strings"   primitive!

  • Cluster "SLOTS" subcommand memory optimization.

  • The LCS command is now a subcommand of STRALGO.

  • Meaningful offset for replicas as well. More successful partial   resynchronizations.

  • Optimize memory usage of deferred replies.

  • Faster CRC64 algorithm for faster RDB loading.

  • XINFO STREAM FULL, a new subcommand to get the whole stream state.

  • CLIENT KILL USER.

  • MIGRATE AUTH2 option, for ACL style authentication support.

  • Other random bugfixes.

此日志更新的主要内容如下:

  • 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.1 正式版的下载地址为:https://redis.io/

官方的更新日志(英文):https://raw.githubusercontent.com/antirez/redis/6.0/00-RELEASENOTES

总结

综合以上所有版本的更新日志,我们发现这次 Redis 6.0 带来的主要功能是:

  • 提供了众多的新模块(modules)API

  • 提供了客户端缓存功能

  • 多线程 I/O 能力

  • 提升了 RDB 日志的加载速度

  • 修改了若干个 bug 和一些优化

其中多线程 I/O 是我们最关注的功能了,有人用它和单线程的版本做了一个性能测试,如下图所示:

(注:图片来源于 iTushou.com)

从以上结果可以看到 GET/SET 命令在多线程版本中的性能相比单线程已经翻倍了。

总体来说,此次 Redis 6.0 带给我们的功能还是很多且比较实用的,只是版本改动很大,因此我们需要一定的时间和大量的测试验证之后才建议上线

最后的话

原创不易,如果觉得本文对你有用,请随手点击一个「在看」,这是对作者最大的支持与鼓励,谢谢你。

参考 & 鸣谢

Redis 官方文档

别再问我 new 字符串创建了几个对象了!我来证明给你看!

String性能提升10倍的几个方法!(源码+原理分析)

关注公众号发送”进群“,老王拉你进读者群。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/546180.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何优雅地「蜗居」?

如果我们把「蜗居」理解为小户型、小空间居住&#xff0c;包括合租、大开间等&#xff0c;如何才能让「蜗居」丝毫不尴尬&#xff0c;所谓「优雅」&#xff0c;就是排除客观限制&#xff0c;最大限度的提升居住品质。王珦&#xff0c;室内设计师&#xff0c;文字编辑 蜗居要看“…

一文带你看完ZooKeeper!

作者 | FrancisQ来源 | JavaGuide“文章很长&#xff0c;先赞后看&#xff0c;养成习惯。❤️ ???? ???? ???? ???? ????”什么是ZooKeeperZooKeeper 由 Yahoo 开发&#xff0c;后来捐赠给了 Apache &#xff0c;现已成为 Apache 顶级项目。ZooKeeper 是一…

HashMap 的 7 种遍历方式与性能分析!「修正篇」

这是我的第 57 篇原创文章首先&#xff0c;给大家说声抱歉~事情经过是这样子的&#xff0c;五一节前我发布了一篇文章《HashMap 的 7 种遍历方式与性能分析&#xff01;》&#xff0c;但是好心的网友却发现了一个问题&#xff0c;他说 “测试时使用了 sout 打印信息会导致测试的…

今天是 OSChina 上线 6 周年!

2019独角兽企业重金招聘Python工程师标准>>> 没什么想说的&#xff0c;除了感谢和继续努力外&#xff0c;感谢所有的 oscers 们、感谢 OSC 曾经和现在的小伙伴、感谢我们的合作伙伴。 今年还有4个月&#xff0c;主要工作安排包括&#xff1a; TeamOSC 上线 PaaSO…

StackOverflow 上面最流行的 7 个 Java 问题!

StackOverflow发展到目前&#xff0c;已经成为了全球开发者的金矿。它能够帮助我们找到在各个领域遇到的问题的最有用的解决方案&#xff0c;同时我们也会从中学习到很多新的东西。这篇文章是在我们审阅了StackOverflow上最流行的Java问题以及答案后从中挑出来的。即使你是一个…

if快还是switch快?解密switch背后的秘密

这是我的第 57 篇原创文章条件判断语句是程序的重要组成部分&#xff0c;也是系统业务逻辑的控制手段。重要程度和使用频率更是首屈一指&#xff0c;那我们要如何选择 if 还是 switch 呢&#xff1f;他们的性能差别有多大&#xff1f;switch 性能背后的秘密是什么&#xff1f;接…

一道题决定去留:为什么synchronized无法禁止指令重排,却能保证有序性?

前几天有一位读者找我问一个问题&#xff0c;说是这道题可能影响了他接下来3年的技术成长。据说这位读者前面的很多问题会的都还可以&#xff0c;属于那种可过可不过的类型的&#xff0c;面试官出了最后一道题&#xff0c;就是回答的满意就可以给Offer&#xff0c;回答的不好就…

【Android开发】之Fragment与Acitvity通信

上一篇我们讲到与Fragment有关的常用函数&#xff0c;既然Fragment被称为是“小Activity”&#xff0c;现在我们来讲一下Fragment如何与Acitivity通信。如果上一篇还有不懂得&#xff0c;可以再看一下。传送门。 Fragment与Activity通信的方式如下&#xff1a; 一、通过初始化函…

「递归」的正确打开方式,看不懂你打我~

这是磊哥的第 189 期分享作者 | 田小齐来源 | 码农田小齐&#xff08;ID&#xff1a;NYCSDE&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;前言 递归&#xff0c;是一个非常重要的概念&#xff0c;也是面试中非常喜欢考的。因为它不但能考察…

Log4cpp 使用手册

参考资料&#xff1a; log4cpp 配置 与 使用http://www.cnblogs.com/welkinwalker/archive/2011/06/23/2088197.html 便利的开发工具-log4cpp快速使用指南 http://www.ibm.com/developerworks/cn/linux/l-log4cpp/ Log4cpp配置文件格式说明 http://sogo6.iteye.com/blog/115431…

switch 的性能提升了 3 倍,我只用了这一招!

这是我的第 190 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;上一篇《if快还是switch快&#xff1f;解密switch背后的秘密》我们测试了 if 和 switch 的性能&am…

HashMap get不出对象时出错 解决

为什么80%的码农都做不了架构师&#xff1f;>>> 如题&#xff1a; Map map new HashMap(); map.put("1", "A"); map.put("2", "A"); map.put("3", "A"); map.put("4", "A")…

高质量SQL的30条建议!(后端必备)

这是我的第 191 期分享作者 | 捡田螺的小男孩来源 | 捡田螺的小男孩&#xff08;ID&#xff1a;gh_873ad5979a0b&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;本文将结合实例demo&#xff0c;阐述30条有关于优化SQL的建议&#xff0c;多数…

Redis的自白:我为什么在单线程的这条路上越走越远?

这是我的第 192 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;我是 Redis&#xff0c;今年 11 岁了~曾几何时我是辣么的单纯&#xff0c;辣么的可爱&#xff0c;而如…

关于引用

2019独角兽企业重金招聘Python工程师标准>>> 1、 <!-- lang: html --> <!DOCTYPE HTML> <!-- lang: html --> <html> <!-- lang: html --> <head> <!-- lang: html --> <meta charset"utf-8" /> <!--…

一口气说出 6 种延时队列的实现方法,面试官满意的笑了

这是我的第 193 期分享作者 | 程序员内点事来源 | 程序员内点事&#xff08;ID&#xff1a;chegnxy-nds&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;五一期间原计划是写两篇文章&#xff0c;看一本技术类书籍&#xff0c;结果这五天由于自…

acl 服务器编程框架特点介绍

2019独角兽企业重金招聘Python工程师标准>>> acl 中服务器框架模块是一个非常重要的模块&#xff0c;使用该模块技术人员可以快速地写出稳定、安全、高效的网络服务应用&#xff0c;该模块主要来源于著名的邮件服务器程序 (Postfix) 中的 master 模块&#xff0c;为…

人人都能看懂的 6 种限流实现方案!(纯干货)

这是我的第 195 期分享作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;为了上班方便&#xff0c;去年我把自己在北郊的房子租出去了&#xff0c;搬到了南郊&#xff0c;这样…

測试新浪微博@小冰 为代码机器人的一些方法

微软的微信小冰被腾讯封杀之后,如今移民到了新浪微博; 小冰 这里贴一些眼下有效的用来识别是这是"机器"而不是有正常人类智商的代码的方法: 1. 在正常的文字中夹杂其他符号,确保不存在有意义的连续的词汇,人眼能够分辨,机器不知所云而会露馅: 比方: ^^^小v冰^^^-…

秒建一个后台管理系统?用这5个开源免费的Java项目就够了

这是我的第 196 期分享作者 | Guide来源 | JavaGuide&#xff08;ID&#xff1a;JavaGuide&#xff09; 分享 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;大家好&#xff0c;我是 Guide 哥&#xff0c;一个三观比主角还正的技术人。今天推荐几个 Java 项目…