Redis不是说用单线程的吗?怎么6.0成了多线程的?
Redis6.0的多线程是用多线程来处理数据的读写和协议解析,但是Redis执行命令还是单线程的。
这样做的⽬的是因为Redis的性能瓶颈在于⽹络IO⽽⾮CPU,使⽤多线程能提升IO读写的效率,从⽽整体提⾼Redis的性能。
为什么命令执行为什么不采用多线程?
- 使用多线程会提升复杂度,对于 redis 这种内存数据库,代价太高
- 一般情况下,redis 的瓶颈在于网络模块和内存,而非 CPU
- 可以在一台机器上部署多个实例(集群模式)
- 复杂(慢)命令可以通过 redis module 解决