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

官方更新日志如下:

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

Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?的更多相关文章

  1. KiCad 5.1.0 正式版终于发布

    KiCad 5.1.0 正式版终于发布 前几天看到 KiCad 5.1.0 在官方的测试文件夹中,过了三天正式发布了,看来没什么问题了. 据说比 5.0 快了很多. 以下为官方的新闻. KiCad 5 ...

  2. Redis 3.0正式版发布,正式支持Redis集群

    Redis是一个开源.基于C语言.基于内存亦可持久化的高性能NoSQL数据库,同时,它还提供了多种语言的API.近日,Redis 3.0在经过6个RC版本后,其正式版终于发布了.Redis 3.0的最 ...

  3. Android Studio 3.6 正式版终于发布了

    Google 下载地址 百度云 下载地址 密码:epl9 如题,Android Studio 3.6 正式版终于发布了,值得兴奋呀,毕竟 3.5 大版本更新也已经差不多半年了,撒花撒花!这次更新又更新 ...

  4. [Android应用]《花界》V1.0 正式版隆重发布!

    http://www.cnblogs.com/qianxudetianxia/archive/2012/04/05/2433669.html 1. 软件说明(1). 花界是一款看花软件:“看花,议花, ...

  5. (转)重磅出击:MongoDB 3.0正式版即将发布

    MongoDB 今天宣布 3.0 正式版本即将发布.这标志着 MongoDB 数据库进入了一个全新的发展阶段,提供强大.灵活而且易于管理的数据库管理系统. MongoDB 3.0 在性能和伸缩性方面都 ...

  6. Axure 7.0 正式版 + 汉化包 安装

    详情如下: Axure 7.0 正式版终于发布了,现在提供简体中文版给大家使用. Axure 7.0 正式版: 链接: http://pan.baidu.com/s/1kV4OJ47 提取密码: be ...

  7. QzzmServer v2.0正式版发布

                                 V2.1升级程序已发布,具体见下文                                首先,感谢网友的热情的测评及反馈,现Qzzm ...

  8. 《.NET 5.0 背锅案》第1集:验证 .NET 5.0 正式版 docker 镜像问题

    今天我们分析了博客站点的2次故障(故障一.故障二),发现一个巧合的地方,.NET 5.0 正式版的 docker 镜像是在11月10日提前发布上线的. 而在11月10日下午4点左右,由于 CI 服务器 ...

  9. Redis 3.0.0 正式版出炉,高性能 K/V 服务

    Redis 3.0.0 正式版最终到来了,与 RC6 版本号比較.该版本号改进包含: * 修复了无磁盘的复制问题 (Oran Agra) * 在角色变化后对 BLPOP 复制进行測试 (Salvato ...

随机推荐

  1. Mysql千万级记录表分表策略

    目前,比较流行的分表为2倍扩容. 表A(id, name, age, sex) 基于自增id分表, 通过触发器先同步A到B, 程序通过mod 2操作数据,然后drop掉触发器,在 删除两个A表的偶数i ...

  2. git基础使用合集

    1.git初始化仓库-git init git init 创建一个.git目录,跟踪管理版本 2.git 添加-git add git add xxx.xxx 添加到暂缓区里 git add * 添加 ...

  3. CVPR 2020论文收藏(转知乎:https://zhuanlan.zhihu.com/p/112337176)

    CVPR 2020 共收录 1470篇文章,根据当前的公布情况,人工智能学社整理了以下约100篇,分享给读者. 代码开源情况:详见每篇注释,当前共15篇开源.(持续更新中,可关注了解). 算法主要领域 ...

  4. webpack踩坑 无法解析jquery及webpack-cli

    最近在学习Vue,使用到webpack的时候,出现了错误,可能是3和4的版本问题 webpack-dev-server 安装好webpack-dev-server后,需要在package.json 的 ...

  5. public、private、protected继承区别

  6. ViewStub

    在书上了解了ViewStub,但只是带过两笔,没能了解.在网上搜索了一些资料,虽然很多文章都讲得比较完善,但是觉得可能是表达的原因,导致某个点上我理解错误,慢慢的才算比较清楚的认识ViewStub. ...

  7. 【Java】Junit单元测试

    什么是单元测试? 单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证. 对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Ja ...

  8. 记一个openwrt reboot异步信号处理死锁问题

    写在前面 觉得本页面排版单调的话,可以尝试到这里看. 问题背景 在 openwrt 上碰到了一个偶现的 reboot 失效问题.执行 reboot 之后系统并没有重启,此时控制台还能工作. 初步排查 ...

  9. 图2-4TCP状态转换图

    这张图中描述了TCP中11个状态的转换. 光看这个图我一开始是蒙蔽的,也没有写服务器和客户端的操作流程.不过回头一想,是状态转换,也就是从一个状态到另外一个状态发生了什么,什么条件触发的.这样是不是好 ...

  10. js多线程的实现

    我们都知道JS是一种单线程语言,即使是一些异步的事件也是在JS的主线程上运行的(具体是怎么运行的,可以看我另一篇博客JS代码运行机制).像setTimeout.ajax的异步请求,或者是dom元素的一 ...