Redis之单线程与多线程
redis 单线程与多线程
Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包含获取(socket读)、解析、执行、内容返回(socket写)等都由一个顺序串行的主线程处理,这就是所谓的“单线程”。这也是redis对外提供键值存储服务的主要流程。
但Redis的其他功能,比如持久化RDB、AOF、异步删除、集群数据同步等等,其实是由额外的线程执行的。Redis命令工作线程是单线程的,但是,整个Redis来说,是多线程的。
Redis 3.X单线程时代但性能依旧很快的原因?
官网解释
Redis4之前一直使用单线程的原因
Redis单线程的烦恼??
使用惰性删除可以有效的避免redis卡顿的问题
对于Reids主要的性能瓶颈是内存或者网络带宽而非CPU
redis6与7 真正的多线程登场
主线程和IO线程是怎么协作完成请求处理的?
Unix网络编程中的5种IO模型
Linux世界一切皆文件
文件描述符
I/O 多路复用
一种同步的IO模型,实现一个线程监视多个文件句柄,一旦某个文件句柄就绪就能够通知到对应应用程序进行相应的读写操作,没有文件句柄就绪时就会阻塞应用程序,从而释放CPU资源。
I/O 多路复用场景分析
I/O多路复用简易理解
只使用一个服务端进程可以同时处理多个套接字描述符连接
Redis为什么这样快?
I/O多路复用1+epoll函数使用,才是redis为什么这么快的直接原因,而不是仅仅单线程指令+redis安装在内存中。
简单说明
Redis工作线程是单线程的,但是整个Redis来说,是多线程的。
主线程和IO线程是怎么协作完成请求处理的?
结论
Redis7默认是否开启了多线程?
如果你在实际应用中,发现Redis实例的CPU开销不大但吞吐量却没有提升,可以考虑使用Redis7的多线程机制,加速网络处理,进而提升实例的吞吐量。
总结
视频链接–学习地址
Redis 单线程与多线程