Redis 是单线程,主要是指Redis网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程。
但是(持久化、异步删除、集群数据同步等,由额外的线程执行的)所以Redis称为单线程高性能。
1、为什么Redis用单线程:
单线程避免了资源共享。
2、为什么这么快
Redis大部分在内存中完成,加速高效数据结构,采用多路复用机制,
多路复用机制:
Linux中的IO多路复用机制是指一个线程处理多个IO流(select/epoll机制) 该机制允许内核中,同时存在多个监听套接字和已连接套接字, Redis线程不会阻塞在某一个特定的监听或已经连接的套接字上,
也正因为如此,Redis可以同时和多个客户端连接并处理请求,
Select/epoll提供了基于事件的回调机制,即针对不同事件的发生,调用相应的处理函数。