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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 云栖号资讯:【点击查看更多行业资讯】在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! Redis 6.0.1 于 2020 年 5 月 2 日正式发布了,如 Redis 作者 antirez 所说,这是迄今为止最“企业”化的版本,也是有史以来改动最大的一个 Redis 版本,同时也是参与开发人数最多的一个版本。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!


1

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

官方更新日志如下:

_1

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

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

3

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

3

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

4

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

  • 提高了大量客户端连接时使用 INFO 命令的查询速度。
  • 在所有阻止命令上都大大加快了速度:现在可以阻止在同一键上是 O(1)而不是 O(N)。
  • 陈旧的副本现在允许 MULTI/EXEC。
  • 新命令:LCS(最长公共子序列)。
  • 添加新配置以使 DEL 像 UNLINK。
  • RDB 加载加速。
  • 修复了许多错误。

5.Redis 6.0.0 GA 更新日志

5

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

  • 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 能力是我们最关注的功能了,有人用它和单线程的版本做个一个性能对比,如下图所示:

01

02

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

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

总体来说,此次 Redis 6.0 带给我们的功能还是很大并且很实用的,只是版本改动太大,我们需要等待时间的验证和大量的测试之后才建议上线至生产环境。

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/live

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-03
本文作者:Java中文社群
本文来自:“掘金”,了解相关信息可以关注“掘金”

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
21天前
|
存储 缓存 NoSQL
Redis单线程已经很快了6.0引入多线程
Redis单线程已经很快了6.0引入多线程
31 3
|
20天前
|
NoSQL 数据处理 调度
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
45 0
|
2月前
|
存储 消息中间件 缓存
Redis是否为单线程?
【2月更文挑战第6天】
36 1
Redis是否为单线程?
|
3月前
|
缓存 NoSQL 安全
Redis 新特性篇:多线程模型解读
Redis 新特性篇:多线程模型解读
49 5
|
3月前
|
存储 缓存 NoSQL
Redis 数据结构+线程模型+持久化+内存淘汰+分布式
Redis 数据结构+线程模型+持久化+内存淘汰+分布式
311 0
|
3月前
|
存储 缓存 NoSQL
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
39 0
|
3月前
|
负载均衡 NoSQL Java
redis7.0源码阅读(四):Redis中的IO多线程(线程池)
redis7.0源码阅读(四):Redis中的IO多线程(线程池)
71 0
|
8天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
17 0
|
17天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
17 2