05 Redis线程模型、原理

Redis为什么是单线程的,Redis线程模型
  • Redis内部使用了文件事件处理器file event handle,这个文件事件处理器是单线程的,所以Redis被称为单线程的模型。它采用I/O多路复用机制监听多个socket,多个socket可能会并发产生不同的操作,每个操作对应不同的文件事件,IO多路复用机制将socket产生的事件放入一个队列中,事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理。

文件事件处理器的结构包含4个部分:

  • 多个socket
  • IO多路复用程序
  • 文件事件分派器
  • 事件处理器
    • 连接应答处理器
    • 命令请求处理器
    • 命令回复处理器
Redis为什么快?
  1. 用C语言开发的,所以执行会比较快
  2. 纯内存操作,Redis将所有数据放在内存中,不需要从磁盘读取数据,内存响应时间大约为100纳秒。
  3. 单线程避免了线程切换以及加锁释放锁带来的消耗。
  4. 基于非阻塞IO多路复用机制,redis采用非阻塞的IO多路复用机制监听多个socket,将socket产生的事件放入一个队列中(非阻塞IO多路复用效率很高),事件分派器每次从队列中取出一个事件,把该事件交给对应的事件处理器进行处理(事件处理器是基于纯内存来操作的,效率非常高,处理一个事件只需要几微秒)。
Redis为什么采用单线程

避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值