Redis为什么单线程能够支持高并发

时间:2021-6-17 作者:qvyue

上一篇 select、poll、epoll的区别
下一篇 >>>Netty初识


a、首先Redis官方网站是没有windows版本的,只有linux版本的redis

b、redis的底层是采用NIO的多路IO复用机制实现对不同的tcp链接实现io复用,能否非常好的支持高并发,同事能够先天性支持线程安全问题。
–多路IO复用机制:使用一个线程维护多个不同的IO操作,原理是使用Nio的选择器,将多个不同的Channel(TCP通道)统一交给我们的Selector选择器管理,减少了资源的浪费

c、NIO在不同的操作系统上实现方式是不同的
Windows系统使用Selector实现轮询机制,时间复杂度为O(n),而且还存在空轮询的情况,效率非常低;其次是默认对我们的轮询数据有一定限制1024,所以支持上万TCP链接非常难。
Linux操作系统采用epoll实现事件驱动通知形式,不会存在空轮训的情况,只对活跃的socket链接实现主动回调,在性能上有大大的提升,事件复杂度为O(1)
所以nginx支持5W的并发量,以及Redis能够有非常高的并发量,都是使用了Linux中的IO多路复用机制epoll。


推荐阅读:
OSI七层模型与层上协议
TCP的三次握手建立链接和四次挥手释放链接
TCP、UDP及Socket代码示例
Https的1.0、2.0协议及长短链接区别
Linux系统的五种IO模型
BIO和NIO区别
BIO模型的缺陷
NIO模式的IO多路复用底层原理
select、poll、epoll的区别
Netty初识
Netty的粘包和拆包问题分析
粘包和拆包问题解决方案汇总
序列化与反序列化知识点汇总
MessagePack反序列化使用示例
Marshalling在Netty中的使用

声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。