redis是一个单进程单线程的内存数据库,主要用来作为缓存系统。采用了网络io多路复用技术来保证在多连接的时候的系统的吞吐量
因为redis是单线程的,所有的 *** 作都是按照顺序线性执行的,但是由于读写 *** 作是阻塞的,所以某个请求假如是阻塞的话那么整个进程都无法对其他客户端提供服务。所以就有了io多路复用
redis的io多路复用模型是基于epoll实现的,多路复用技术还有select,poll。选择epoll实现的原因就是epoll有以下优点:
1epoll没有最大并发连接的限制,上限是最大可以打开文件的数目
2效率更高,epoll只管活跃的连接,而与连接总数无关
3内存使用上epoll使用了共享内存,所以内存拷贝也省略了
其实io多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪,就能够通知程序进行相应的 *** 作(通过监视描述符,将对数据库的 *** 作转换成了事件,从而减少了线程切换时上下文的切换和竞争)
Redis是内存数据库,数据存储在内存中,所以Redis相对于传统磁盘数据库来说具有更快的读写速度,查询响应时间不会受到数据量的影响。但如果数据量非常大,内存不足的情况下,Redis可能会因为需要使用繁重的数据替换和其他 *** 作降低读写效率,影响查询和整个系统的性能。
以上就是关于Redis的多路复用是如何保证读写的顺序正确全部的内容,包括:Redis的多路复用是如何保证读写的顺序正确、redis数据多会影响查询吗、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)