追求性能极*致:Redis6.0的多线程模型

2023-04-10 00:00:00 执行 线程 多线程 网络 单线程

背景

我们在篇《Redis系列1:深刻理解高性能Redis的本质》中就已经提到了,Redis 的网络 IO 以及键值对指令读写是由单个线程来执行的,避免了不必要的contextswitch和资源竞争,对于性能提升有很大的帮助。
而到了2020年的5月份,Redis官方 推出了 令人瞩目的 Redis 6.0,提出很多新特性,包含 多线程网络IO 的概念,如下:

新特性内核优化应用优化其他
ACL细粒度权限管控(包括ACL LOG)过期Key回收优化,增加配置参数新版本Module API全面支持SSL协议、并新增TSL协议
客户端缓存(Client side caching)Resp3协议,兼容Resp2,更加简单、高效disque消息队列模块Redis-benchmark支持集群模式
多线程处理网络 IO(Threaded I/O)优化了INFO命令,效率更高新增配置,支持Del命令如unlink执行Systemd支持重写
Redis集群代理(Cluster proxy)优化阻塞命令,复杂度从O(n)到O(1)XINFO STREAM FULL流命令新增配置参数来删除用于在非持久性实例中进行复制的RDB文件
支持linux/bsd系统的CPU和线程(包括子线程如aof、dbIO线程)亲和力绑定RDB加载速度优化CLIENT KILL USER username命令无磁盘复制副本(Diskless replication on replicas),从测试版优化,目前无磁盘复制在load rdb仍是测试版。
集群Slots命令优化
Psync2优化,修复了5.0的链式复制不一致问题。
defrag优化,从试验版到正式版

相关文章