3. 高性能IO模型,探究Redis单线程为何很快

2020-09-27  本文已影响0人  one_8274

1. Redis单线程

但Redis的其他功能,比如持久化,异步删除,集群数据同步等都是由额外的线程完成的

2. 为什么Redis使用单线程


2.1 多线程的开销

2.2 其他原因


3. 为什么那么快


4. 基本IO模型和阻塞点

4.1 SimpleKV处理GET请求,IO示例如下图,依次执行如下操作:

Redis基本IO模型

4.2 socket的非阻塞模式

socket 模型,不同操作调用后会返回不同的套接字类型。
image.png
1. 针对监听套接字,可以设置非阻塞模式:当Redis调用accept()但一直未有连接请求到达时,Redis线程可以返回处理其他操作,不用一直等待。但调用accept()时,已经存在监听套接字了
2. 同理,也可以对已连接套接字设置非阻塞模式,如数据没有到达,可以返回处理其他操作
3. 问题:需要有机制,在监听套接字等待后续连接(有请求时通知Redis),继续监听已连接套接字,在有数据到达时通知Redis

Redis机制:基于多路复用的高性能I/O模型

引言:

基于多路复用的Redis高性能IO模型

Redis高性能IO模型

回调机制

总结:

上一篇 下一篇

猜你喜欢

热点阅读