Redis是单线程还是多线程,Redis的单线程问题

Redis的单/多线程不仅仅体现在版本上,还提现在Redis区域位置上。

简单概括:Redis7属于多线程和单线程结合

单线程

  • 使用单个工作线程,保证了数据安全性,因为无需管理多线程数据不一致,同时避免了线程上下文切换,造成资源消耗

  • 因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型

  • 为什么使用单线程:

    • Redis在内存中工作,得益于内存的特性(快,丢失数据)所以也无需添加多线程,而造成其他方面的问题

    • 之前计算机多为2/4核,多线程模式也发挥不出性能,而现在都4/8核心,高级服务器芯片甚至64+

多线程

  • 多个IO线程协同工作来解决网络IO的瓶颈问题

  • Redis6将网络数据读写、请求协议解析通过多个IO线程的来处理 ,对于真正的命令执行来说,仍然使用单线程操作

  • 为什么使用多线程:

    • Redis性能瓶颈并不在CPU,由于Redis在于内存工作,所以更多性能瓶颈是网络宽带

    • 正如Mysql需要连接池一样,Redis也需要IO复用

什么是Reactor

  • Reactor 模式要求 主线程(I/O 处理单元) 只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作。 读写数据,接受新的连接,以及处理客户请求均在工作线程中完成

工作线程为什么仍然是单线程

  • 使用单个工作线程,保证了数据安全性,因为无需管理多线程数据不一致的情况,同时避免了线程上下文切换,造成资源消耗。并且在内存中操作,效率高

以前Redis版本所说的单线程:其实只有一个主工作线程,同步等等还是有后台线程来操作的

上面所说的区域位置:Redis工作线程是单线程的,但是,整个Redis来说,是多线程的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值