redis到底是单线程还是多线程?为什么是单线程还这么快?

        先来处理题目第一个问题,这个问题问得非常不严谨,针对不同的问法有两种答法。先告诉你答案。

1.  redis的核心业务,也就是命令处理部分是多线程还是单线程?  答案: 单线程。

2.  整个redis的运行是多线程还是单线程? 答案: 多线程。

redis整体

        Redis 在 2.6 版本,会启动 2 个后台线程,分别处理关闭文件、AOF 刷盘这两个任务;

        redis在4.0版本更新的时候就加入了异步删除的命令unlink,由于某些大key,删除时要处理的数据过多,会阻塞主线程的处理,就新增一个线程异步执行删除。

        redis在6.0版本更新时在网络模型加入了多线程,提高了cpu的利用。这里不懂的可以去看看redis的io多路复用。

redis核心

        从接收客户端请求->解析请求 ->进行数据读写等操作->发送数据给客户端这个是核心的业务,为单线程,不用担心数据方面线程安全的问题。

命令的处理是单线程为什么还这么快?

1. 抛开持久化不谈,Redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而不是执行速度,因此多线程并不会带来巨大的性能提升。而且redis6.0版本之后添加多线程也只是去处理网络io,命令的一套处理还是单线程完成。
2. 多线程会导致过多的上下文切换,带来不必要的开销。

3. 引入多线程会增加线程安全问题,处理线程安全问题非常复杂,性能会大打折扣。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

.ccc.。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值