Redis为什么单线程Redis有这么高的效率(多路IO复用技术)

多路IO复用技术

多路复用是指使用一个线程来检查多个文件描述符(Socket)的就绪状态,比如调用select和poll函数,传入多个文件描述符,如果有一个
文件描述符就绪,则返回,否则阻塞直到超时。得到就绪状态后进行真正的操作可以在同一个线程里执行,也可以启动线程执行
(比如使用线程池)

简单说就是所有的请求到了Redis全部会被监视准备完成的请求会直接交给Redis处理,所以Redis一直在处理请求,而没有了接受到请求等待请求结束的这个阻塞状态.

简单的介绍一下阻塞IO 非阻塞IO 多路IO复用
阻塞IO: 这个线程会等待资源就绪 再去执行其他操作
非阻塞IO: 这个线程不会等待这个资源是否就绪 可以再去访问其他资源
多路IO复用:
相当于找了一个监视器 监视所有资源/请求 在资源准备期间 线程可以处理其他事情
多路IO复用有三种
select: 就是每个请求来 一个一个通讯 资源是否准备就绪 如果资源准备就绪就交给Redis处理 没有就继续通讯其他请求 select的性能有限 一次最多监视1024个请求
poll: 与select相同 但是没有数量上的限制
epoll: 他会为每个资源设置一个表示符 只要看资源的表示符 准备完毕就可以交给Redis处理

猜你喜欢

转载自blog.csdn.net/weixin_43939924/article/details/113618512