redis多路复用如何保证顺序?
2021-04-01
redis是一个单进程单线程的内存数据库,主要用来作为缓存系统。采用了网络io多路复用技术来保证在多连接的时候的系统的吞吐量
因为redis是单线程的,所有的操作都是按照顺序线性执行的,但是由于读写操作是阻塞的,所以某个请求假如是阻塞的话那么整个进程都无法对其他客户端提供服务。
所以就有了io多路复用
redis的io多路复用模型是基于epoll实现的,多路复用技术还有select,poll。选择epoll实现的原因就是epoll有以下优点:
1.epoll没有最大并发连接的限制,上限是最大可以打开文件的数目
2.效率更高,epoll只管活跃的连接,而与连接总数无关
3.内存使用上epoll使用了共享内存,所以内存拷贝也省略了
其实io多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪,就能够通知程序进行相应的操作(通过监视描述符,将对数据库的操作转换成了事件,从而减少了线程切换时上下文的切换和竞争)
大家都在看
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!本站文章版权归原作者所有,内容为作者个人观点。本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。