Redis② —— Redis线程模型
创始人
2025-01-07 02:32:06
0

1. Redis是单线程吗?

  • 指 接受客户请求 --> 解析请求 --> 进行数据读写操作 --> 发送数据给客户端 这个过程由一个主线程完成
  • redis程序并不是单线程的,在启动时会启动后台进程
    • 2.6之前启动两个后台线程,分别处理关闭文件、AOF刷盘
    • 4.0后新增一个后台线程,用来异步释放redis内存(lazyfree线程)
    • 这三个任务很耗时不能交给主线程处理

2. redis单线程模式

  • redis 6.0之前是单线程的,6.0之后引入了多线程
  • 单线程处理流程:
    • 初始化:
      • 调用 epoll_create() 创建一个 epoll 对象和调用 socket() 创建一个服务端 socket
      • 调用 bind() 绑定端口和调用 listen() 监听该 socket
      • 将调用 epoll_ctl() 将 listen socket 加入到 epoll,同时注册「连接事件」处理函数。
    • 主线程进入事件循环函数:
      • 先调用处理发送队列函数,看发送队列是否有任务
        • 有 --> write函数发出去,如果这一轮没发送完就会注册写事件处理函数,等待 epoll_wait 发现可写后再处理
      • 调用 epoll_wait 函数等待事件的到来
        • 如果是连接事件,调用连接事件处理函数
          • 调用 accpet 获取已连接的 socket --> 调用 epoll_ctl 将已连接的 socket 加入到 epoll --> 注册「读事件」处理函数
        • 如果是读事件,调用读事件处理函数
          • 调用 read 获取客户端发送的数据 --> 解析命令 --> 处理命令 --> 将客户端对象添加到发送队列 --> 将执行结果写到发送缓存区等待发送
        • 如果是写事件,调用写事件处理函数
          • 通过 write 函数将客户端发送缓存区里的数据发送出去,如果这一轮数据没有发送完,就会继续注册写事件处理函数,等待 epoll_wait 发现可写后再处理

在这里插入图片描述

3. redis采用单线程为什么速度还快?

  • Redis 的大部分操作都在内存中完成,并且采用了高效的数据结构
  • 采用单线程模型可以避免了多线程之间的竞争
  • 采用了 I/O 多路复用机制处理大量的客户端 Socket 请求

4. redis 6.0 之后为什么引入了多线程?

  • 采用了多个 I/O 线程来处理网络请求,这是因为随着网络硬件的性能提升,Redis 的性能瓶颈有时会出现在网络 I/O 的处理上
  • 对于命令的执行,Redis 仍然使用单线程来处理
  • Redis 在启动的时候,默认情况下会额外创建 6 个线程(不包括主线程)
    • Redis-server : Redis的主线程,主要负责执行命令;
    • bio_close_file、bio_aof_fsync、bio_lazy_free:三个后台线程,分别异步处理关闭文件任务、AOF刷盘任务、释放内存任务;
    • io_thd_1、io_thd_2、io_thd_3:三个 I/O 线程,用来分担 Redis 网络 I/O 的压力。

相关内容

热门资讯

据监测!衢州都莱有没有辅助器,... 据监测!衢州都莱有没有辅助器,传送屋激k有挂吗,攻略教程(原来是有挂)-哔哩哔哩衢州都莱有没有辅助器...
今日头条!闲聚app辅助软件(... 今日头条!闲聚app辅助软件(辅助挂)开挂透视辅助教程(都是是真的挂)-哔哩哔哩1、闲聚app辅助软...
受玩家影响!山西扣点点胜率辅助... 受玩家影响!山西扣点点胜率辅助器,点我休闲辅助,切实教程(切实有挂)-哔哩哔哩1、下载好山西扣点点胜...
总算明白!佛手在线怎么提高胜率... 总算明白!佛手在线怎么提高胜率(辅助挂)开挂透视辅助脚本(都是是有挂)-哔哩哔哩进入游戏-大厅左侧-...
有玩家发现!今日长牌破解,心悦... 有玩家发现!今日长牌破解,心悦填大坑辅助,线上教程(原来是真的挂)-哔哩哔哩1、完成心悦填大坑辅助透...
技术分享!桂林字牌科技免费版(... 技术分享!桂林字牌科技免费版(辅助挂)开挂透视辅助方法(其实真的是有挂)-哔哩哔哩1、玩家可以在桂林...
一直以来!创思维激k辅助工具,... 一直以来!创思维激k辅助工具,约战沙城脚本,微扑克教程(确实真的是有挂)-哔哩哔哩1、创思维激k辅助...
玩家必备攻略!一起宁德钓蟹操作... 玩家必备攻略!一起宁德钓蟹操作器(辅助挂)开挂透视辅助教程(好像有挂)-哔哩哔哩1、全新机制【一起宁...
截至目前!微信小程序辅助器,顺... 截至目前!微信小程序辅助器,顺欣茶楼辅助软件,力荐教程(都是是真的挂)-哔哩哔哩1、点击下载安装,顺...
分享个大家!嘟咪互动(辅助挂)... 分享个大家!嘟咪互动(辅助挂)开挂透视辅助软件(果然有挂)-哔哩哔哩1、嘟咪互动系统规律教程、嘟咪互...