5.Redis 到底是单线程还是多线程?

Redis 是单线程。

  1. Redis 单线程到底指什么?
    Redis 单线程是指的是执行 Redis 命令的核心模块是单线程的,而不是整个 Redis 实例就一个线程,Reids 其它的模块还有各自模块的线程。
    在这里插入图片描述
    Redis 基于 Reactor 模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。
  2. Redis 不仅仅是单线程
    一般来说 Redis 的瓶颈并不在 CPU,而在内存和网络。如果要使用 CPU 多核,可以搭建多个 Redis 实例来解决。
    其实,Redis 4.0 开始就有多线程的概念了,比如 Redis 通过多线程方式在后台删除对象、以及通过 Redis 模块实现的阻塞命令等。Redis 6.0 提出了 Threaded IO ,是指的是IO 处理方面上的多线程,但是执行命令的核心模块还是单线程的。
  3. 为什么网络处理要引入多线程?
    Redis 的瓶颈并不在 CPU,而是内存和网络。
    内存不够的话,可以加内存或者做数据结构优化和其他优化等,但是网络的性能优化才是大头,网络 IO 的读写在 Redis 整个执行期间占用了大部分的 CPU 时间,如果把网络处理这部分做成多线程处理方式,那对整个 Redis 的性能会有很大的提升。
    但是 Redis 6.0 版本是刚发布的,应用方面还没有全面覆盖,IO 多线程处理模式是默认不开启的,需要配置文件中开启配置线程数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值