一、Redis有多快?
官方:单机可以支持约10w/s的QPS
二、Redis为什么这么快?
1、【基于内存操作】数据缓存在内存中,避免了磁盘io的开销
2、【数据结构与算法】如:string 类型的value做了压缩表,和list查询做了跳表查询。
3、【单线程】省去了很多上下文切换的时间以及CPU消耗,不存在多线程锁的竞争。
4、【IO多路复用】基于事件驱动,Reactor 响应式模式,(避免线程的开销)
三、为什么Redis是单线程?
官方给出的答案是:CPU不是主要瓶颈,主要瓶颈是 内存和带宽。所以单线程是最佳选择。
四、Redis6.0 的多线程:
1、Redis6.0 之前为什么一直不使用多线程?
因为单线程足以应对大部分场景,且可避免多线程带来的并发安全问题和复杂性,同时 Redis 的性能瓶颈主要在内存和网络而非 CPU
2、Redis6.0 为什么要引入多线程呢?
为了提高网络IO处理能力(请求网络和网络响应),解决网络读写的性能瓶颈,从而提升整体吞吐量。
3、Redis6.0 如何开启多线程?
默认是关闭的。可以在conf文件进行配置开启:
io-threads-do-reads yes
io-threads 线程数
4、多线程模式下,是否存在线程并发安全问题?
不存在,因为核心的命令执行仍由单线程处理,多线程仅负责网络 IO 操作(如连接和响应)。