分布式缓存 Redis - 理解Redis的单线程操作

开篇

一般情况下,我们会在很多场景中使用到缓存,而缓存一般会分为本地缓存(其实咱们常见的ConcurrentHashMap就是可以用于实现本地缓存的一种常见形式),而分布式缓存中,多以Redis比较常见,使用也是最广的。

本文将会从多个方面简要的描述Redis的基本理论(本文暂时不探讨集群相关内容,以Redis单机作为基本例子);

Redis单线程操作是如何进行的?

由于Redis的操作基本都会在内存中进行,所以必然会出现的问题便是宕机重启后如何快速恢复数据;为了保证Redis的高性能,所以Redis使用单线程来处理读写请求;

Redis内部使用文件事件处理器(FileEventHandler:记录传入的每一个IO流的状态,并且同时起到了管理IO的作用),该处理器都是单线程的处理器;

Redis使用IO多路复用的机制配合内部的文件事件处理器,监听了多个Socket连接,然后将产生的事件压入到了队列中;然后文件事件处理器根据对应的事件分配不同的处理器来进行处理;

其过程简单描述如下:

1、Redis 进程启动后,会打开SocketServer端口供Client连接;

2、每一个客户端都对应一个SocketClient,会想端口发送连接请求,这时,当Redis进程客户端连接数正常,会产生AE_READABLE事件,这时IO多路复用发挥作用,由于监听多个Socket所以可以很方便的将各种事件压入到内存队列中;

3、当有事件压入到内存队列中的时候,FileEventHandler处理器便开始发挥它的功能,根据不同的事件开始分配不同的处理器(连接应答处理器,命令回复处理器,命令请求处理器)比如上述2中所描述的事件,会被分配到连接应答处理器中;

4、连接应答处理器开始处理事件,创建对应的Socket并将结果返回给Client;

5、Client与Redis服务成功建立连接之后,发送redis命令,按照上述过程,将对应的时间压入队列,文件事件处理器,将命令提供给命令请求处理器处理;命令请求处理器处理完成后,由命令回复处理器进行后续的返回结果操作;

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值