五一期间,Redis 6.0.0 稳定版(GA)终于发布,Redis 6.0 最终的发布一共经历了四个 RC(Release Candidate)版,从第一个候选版本的发布到一个稳定版本前后经历了大概四个半月(Redis 6.0 RC1 于 2019-12-19 发布)。Redis 6 是 Redis 有史以来最大的版本,虽然现在发布了 GA 版,但是在将它投入生产之前仍然需要谨慎。本文将介绍 Redis 6.0 RC1 到 GA 版本除稳定性相关之外的新功能或改进。

客户端缓存进行了重新设计

Redis 6.0 RC1 到 GA 版本,Redis 客户端缓存在某些方面进行了重新设计,特别是放弃了缓存槽(caching slot)方法而只使用 key 的名称。在分析了备选方案之后,在其他 Redis 核心团队成员的帮助下,这种方法最终看起来更好。

客户端缓存重新设计中引入了广播模式(broadcasting mode)。在使用广播模式时,服务器不再尝试记住每个客户端请求的 key。取而代之的是,客户订阅 key 的前缀:每次修改匹配前缀的 key 时,这些订阅的客户端都会收到通知。这意味着会产生更多的消息(仅适用于匹配的前缀),但服务器端无需进行任何内存操作。

用于复制的 RDB 文件如果不再有用,它将立即被删除

现在,Redis 支持一种模式,就是用于复制的 RDB 文件如果不再有用,它将立即被删除,这个需求是大家很早之前就非常期待的。不过,在某些环境中,最好不要将数据放在磁盘上,而只放在内存中。

ACL 有所提升

ACL在某些方面做的更好。首先,Redis 6.0 有一个新的 ACL LOG 命令,该命令允许查看所有违反 ACL 的客户端,访问不应该访问的命令,不应该访问的 key 或尝试失败的身份验证。这些日志实际上是在内存中,因此每个外部代理都可以调用 ACL LOG 来查看发生了什么,这对于调试 ACL 问题非常有用。

PSYNC2 复制协议进行了改进

复制协议 PSYNC2 现在得到了改进。Redis 将能够更频繁地部分重新同步,因为它能够修整协议中的最终 PING,从而使副本和主副本更有可能找到一个公共的偏移量。

带有超时的 Redis 命令现在要好用得多

除了 BLPOP 命令,其他用于接受秒的命令现在都接受十进制数字,而且实际分辨率也得到了改进,以使其永远不会比当前的“HZ”值更差,因为其不管连接客户机的数量。

RDB文件现在加载速度更快了

Redis 6.0,RDB 文件的加载速度比之前变得更快了。根据文件的实际组成(较大或较小的值),大概可以获得 20-30% 的改进。除此之外,INFO 也变得更快了,当有许多客户端连接时,这会消耗很多时间,不过现在终于消失了。

新的 STRALGO 命令

STRALGO 实现了复杂的字符串算法。目前唯一实现的是 LCS(最长的公共子序列),它是一种重要算法,用于比较冠状病毒的RNA (以及其他生物的DNA和RNA)。

支持多线程 IO

众所周知,Redis 在过去一直都是用单线程模型来处理数据的。但是对于单线程 Redis 来说,性能瓶颈主要在于网络的 IO 消耗, 所以如果采用多线程 IO,优化的方向主要有以下两点:

提高网络 IO 性能,典型的实现像使用 DPDK 来替代内核网络栈的方式;使用多线程充分利用多核,典型的实现像 Memcached。从 Redis 6.0 RC1 起,Redis 提供了可选的多线程模型,以此来满足不同用户的需求。国外有同学对比了 Redis 多线程和单线程的 SET 和 GET 性能,

如果想及时了解Spark、Hadoop或者HBase相关的文章,欢迎关注微信公众号:iteblog_hadoop

从上图可以看出,多线程 IO 的 Redis 版本在 SET 和 GET 的性能确实比单线程有所提高。

好了,上面就是 Redis 6.0 相对于 6.0 RC1 的新功能。不过截止到本文编写时,Redis 已经发布了 6.0.1 版本,这个版本主要是解决一些小的 bug,具体参见 Redis 6.0 release notes。

本文参考 Redis 6.0 Release Note[1] 

Redis 6.0.0 GA is out![2]


©著作权归作者所有:来自51CTO博客作者mob604756e9d3bc的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Docker安装及配置优化(3)
  2. 【修订版】一文看懂Kafka消息格式的演变
  3. Netty+Spring Boot仿微信 全栈开发高性能后台及客户端
  4. Kafka 客户端是如何找到 leader 分区的
  5. springcloud alibaba 阿里组件版本关系
  6. 流媒体技术之ICE工作原理
  7. Apache Spark 2.1.0正式发布,Structured Streaming有重大突破
  8. VMware ESXi 6.5补丁升级
  9. Linux下编译Qt 5版本源码

随机推荐

  1. 从另一个Python脚本调用Python脚本的最佳
  2. python3如何打印进度条
  3. 基于fastai的分类网络
  4. 关于Python的编码注释# -*- coding:utf-8
  5. Python列表以及列表的处理方法
  6. AttributeError:“MatrixFactorizationMo
  7. 小白学Python---面向对象02
  8. Spark学习,pyspark执行后默认启动Ipython
  9. 通过分隔符计数和位置从数据框中提取特定
  10. 安装python2.6.6到ubuntu12.04