Redis的多路复用是如何保证读写的顺序正确

如题所述

redis是一个单进程单线程的内存数据库,主要用来作为缓存系统。采用了网络io多路复用技术来保证在多连接的时候的系统的吞吐量

因为redis是单线程的,所有的操作都是按照顺序线性执行的,但是由于读写操作是阻塞的,所以某个请求假如是阻塞的话那么整个进程都无法对其他客户端提供服务。所以就有了io多路复用

redis的io多路复用模型是基于epoll实现的,多路复用技术还有select,poll。选择epoll实现的原因就是epoll有以下优点:

1.epoll没有最大并发连接的限制,上限是最大可以打开文件的数目

2.效率更高,epoll只管活跃的连接,而与连接总数无关

3.内存使用上epoll使用了共享内存,所以内存拷贝也省略了

其实io多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪,就能够通知程序进行相应的操作(通过监视描述符,将对数据库的操作转换成了事件,从而减少了线程切换时上下文的切换和竞争)
温馨提示:答案为网友推荐,仅供参考
相似回答