Redis单线程还快的原因

Redis单线程还快的原因

Redis Server是多线程的,Redis单线程指的是请求处理整个流程是单线程的!

单线程还快的原因

  • 纯内存操作:

    Redis数据存储在内存中,速度很快。

  • 非阻塞IO多路复用机制:

    Redis 采用了多路复用机制,使其在网络 IO 操作中能并发处理大量的客户端请求,实现高吞吐率。

  • 非CPU密集型任务:

    Redis大部分操作并不是CPU密集型任务,即使是单线程也问题不大(组成集群即可利用多核CPU)。Redis瓶颈在于内存和带宽。

  • 单线程:

    避免了线程上下文切换和竞争资源产生的消耗。

  • 高效的数据结构:

    Redis底层采用了如哈希表、跳表这样的高效数据结构。

补充

redis 非阻塞的IO多路复用机制

IO多路复用:使用单线程实现同时处理多个客户端的连接。

请添加图片描述

在 Redis 只运行单线程的情况下,该机制允许内核中,同时存在多个监听套接字和已连接套接字。内核会一直监听这些套接字上的连接请求或数据请求。一旦有请求到达,就会交给 Redis 线程处理,这就实现了一个 Redis 线程处理多个 IO 流的效果。
请添加图片描述

跳表:

在有序链表的基础上增加多级索引,实际是一种增加了前向指针的链表。

跳表查找任意数据的时间复杂度为O(logn)
请添加图片描述

Redis Server

Redis Server是多线程的,除了请求处理流程是单线程处理之外,Redis内部还有其他工作线程在后台执行,它负责异步执行某些比较耗时的任务,例如AOF每秒刷盘、AOF文件重写都是在另一个线程中完成的。在新版本的Redis中,大key的删除、请求数据的协议解析等操作都是有多线程异步完成的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值