追求性能极*致:Redis6.0的多线程模型
背景
我们在篇《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优化,从试验版到正式版 |
相关文章