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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

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


image.png


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


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

相关实践学习
基于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
相关文章
|
3月前
|
监控 NoSQL 安全
如何在 Redis 中正确使用多线程?
【10月更文挑战第16天】正确使用 Redis 多线程需要综合考虑多个因素,并且需要在实践中不断摸索和总结经验。通过合理的配置和运用,多线程可以为 Redis 带来性能上的提升,同时也要注意避免可能出现的问题,以保障系统的稳定和可靠运行。
70 2
|
3月前
|
存储 NoSQL Redis
Redis 新版本引入多线程的利弊分析
【10月更文挑战第16天】Redis 新版本引入多线程是一个具有挑战性和机遇的改变。虽然多线程带来了一些潜在的问题和挑战,但也为 Redis 提供了进一步提升性能和扩展能力的可能性。在实际应用中,我们需要根据具体的需求和场景,综合评估多线程的利弊,谨慎地选择和使用 Redis 的新版本。同时,Redis 开发者也需要不断努力,优化和完善多线程机制,以提供更加稳定、高效和可靠的 Redis 服务。
72 1
|
11天前
|
NoSQL Redis
单线程传奇Redis,为何引入多线程?
Redis 4.0 引入多线程支持,主要用于后台对象删除、处理阻塞命令和网络 I/O 等操作,以提高并发性和性能。尽管如此,Redis 仍保留单线程执行模型处理客户端请求,确保高效性和简单性。多线程仅用于优化后台任务,如异步删除过期对象和分担读写操作,从而提升整体性能。
35 1
|
3月前
|
存储 运维 NoSQL
Redis为什么最开始被设计成单线程而不是多线程
总之,Redis采用单线程设计是基于对系统特性的深刻洞察和权衡的结果。这种设计不仅保持了Redis的高性能,还确保了其代码的简洁性、可维护性以及部署的便捷性,使之成为众多应用场景下的首选数据存储解决方案。
46 1
|
3月前
|
NoSQL Redis 数据库
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
本文解释了Redis为什么采用单线程模型,以及为什么Redis单线程模型的效率和速度依然可以非常高,主要原因包括Redis操作主要访问内存、核心操作简单、单线程避免了线程竞争开销,以及使用了IO多路复用机制epoll。
62 0
Redis单线程模型 redis 为什么是单线程?为什么 redis 单线程效率还能那么高,速度还能特别快
|
4月前
|
NoSQL 网络协议 Unix
1)Redis 属于单线程还是多线程?不同版本之间有什么区别?
1)Redis 属于单线程还是多线程?不同版本之间有什么区别?
102 1
|
NoSQL Redis
redis-4.0新功能介绍
阿里云redis-4.0的新特性介绍
5420 0
|
存储 NoSQL Redis
Redis 5.0新功能介绍
Redis5.0是Redis产品的重大版本发布。新增的stream数据结构,提供了丰富的应用场景和想象空间;内核的改进和bugfix,使用更健壮;支持账号体系,根据账号用途赋予相应的权限,更加安全;审计日志,记录了读写操作、敏感操作(keys、flushall等)、慢日志、管理类命令,供用户查询;大key分析,基于快照的完整内存分析,更准确,直接输出内存消耗top排行的key;支持单机和集群版的平滑迁移。
10439 0
|
14天前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
157 85
|
3月前
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
85 6