面试说Redis是单线程的,面试官笑了。。。

Redis单线程与多线程概述

  • Redis传统单线程: 主要指网络请求和数据操作由一个线程完成。
  • Redis 4.0多线程: 引入部分多线程机制,但主要功能仍由单线程处理。
  • Redis 6.0多线程: 引入多线程模型,主要针对网络请求处理,提高并发性能。

Redis单线程的原因

  • CPU资源非瓶颈: Redis操作基于内存,CPU不是性能瓶颈。
  • 磁盘IO非瓶颈: 基于内存操作,磁盘IO不是主要瓶颈。
  • 网络IO为瓶颈: 早期通过IO多路复用技术应对,6.0版本引入多线程应对网络性能要求。
  • 多线程弊端: 并发问题增加设计复杂性,上下文切换带来性能开销。

Redis单线程性能原因

  1. 避免共享资源竞争: 单线程模型减少线程切换开销。
  2. 高效的数据结构: 数据结构经过优化,具有高效率和空间效率。
  3. 基于内存操作: 减少IO时间。
  4. IO多路复用: 一个线程监听多个IO事件,提高IO利用率。

Redis 6.0引入多线程原因

  • 复杂业务场景: 高交易量需求,单线程Redis无法满足。
  • 网络IO瓶颈: 多路复用技术在高并发下可能成为瓶颈。
  • 多线程优势: 减少网络I/O等待影响,充分利用CPU多核优势。

Redis网络模型

  • Reactor模式: 基于Reactor模式,分发器模式。
  • 单分发器单线程: 所有操作在单个线程完成,可能成为瓶颈。
  • 单分发器多线程: 数据接收和发送由子线程处理,业务在主线程执行。

Redis多线程方案

  • 改进单分发器多线程: 数据接收、发送和业务处理都在子线程中进行,避免主线程瓶颈。
  • 保持单线程模型: 业务在主线程执行,保持设计一致性,减少修改成本。
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值