redis单线程模型为什么这么高效

一、为什么Redis是单线程的?
         Redis 是基于内存的操作,而CPU 不是 Redis 的瓶颈。Redis 的瓶颈最有可能是机器内存的

大小或者网络带宽。同时,单线程的实现更加简单和经济,采用单线程可以使指令串行,不用额外

维护锁机制,避免了不必要的上下文切换和竞争条件,减少了CPU的消耗。Redis在处理客户端的

读写请求时,只有一个主线程,而在处理以下这些操作时,Redis会fork出其他的子线程来处理:

  • 主从数据同步

  • 切片集群数据同步

  • 过期键值异步删除

  • AOF或RDB持久化

总结得到四点结论:

  • 内存操作

  • 高效的底层数据结构

  • 多路复用IO模型

  • 避免多线程切换开销

二、Redis有多快?
        Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提

供的数据是可以达到10W+的QPS(每秒内查询次数)。

三、Redis为什么可以达到这么快?
        1.Redis完全基于内存,大部分操作都是在内存中完成的;

        2.采用单线程:避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切

换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导

致的性能消耗;

        3.使用多路I/O复用模型,非阻塞IO:Redis可以在单线程中监听多个Socket的请求,在任意一

个Socket可读/可写时,Redis去读取客户端请求,在内存中操作对应的数据,然后再写回到Socket

中。;

        4.非CPU密集型任务:Redis的瓶颈受限于内存和网络宽带,在高并发的请求下,Redis需要

更多的内存空间和更快的网络,否则这会导致瓶颈很容易出现在内存不够用和网络延迟等待的情

况,当Redis实例不满足使用时,可以通过部署多个Redis节点。或者搭建CPU集群的方式利用多

核的CPU。

四、单线程Redis的缺点?
         1.内存空间受限,只能用于小数据量的高性能操作;

         2.用于缓存时,易出现'缓存雪崩','缓存击穿'等问题;

         3.无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善。

五、Redis为什么不采用多进程或是多线程进行处理?
        1.多线程处理可能涉及到锁。

        2.多线程处理会涉及到线程切换而消耗 CPU。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值