redis 在你小脑袋瓜的里的那些问号
单多线程
redis 3.X
redis 在 3.X 中使用的是单线程实现的
reids 4.X
reids 4.X 严格意义来说 redis 并不是单线程的,负责客户端请求的是单线程,但是也增加了一点点多线程的东西,例如多线程异步删除。
为什么单线程用的好好的要用多线程呢,因为如果删除一个超大 key 会导致线程阻塞
redis 6.X
redis 6.X 后,彻底告别了单线程,不过默认是单线程
4.x 之前为啥都是单线程
1:使用单线程模型使 redis 的开发和维护更方便,因为单线程便于开发和调试,
2:即使使用单线程也可以并发的处理多客户端的请求,主要使用的是IO复用和非阻塞式IO
3:对于 Redis 系统来说,主要的性能瓶颈是内存或者网络带宽而非 CPU
单线程的优势,多线程的优势
单线程优势
1:避免锁的开销和上下文切换
2:可以有很高的 Qps
3:数据结构简单