数据库-Redis(19)

Redis 6.0引入多线程主要是为了充分利用多核CPU资源和分摊IO读写负荷,但默认并未开启,需要手动配置。多线程只用于网络IO,执行命令仍保持单线程,故无并发安全问题。
摘要由CSDN通过智能技术生成

​​​​​​​目录

91.Redis 6.0之前为什么一直不用多线程?

92.Redis 6.0为什么要引入多线程呢?

93.Redis 6.0默认是否开启了多线程?

94.Redis 6.0多线程开启时,线程数如何设置?

95.Redis 6.0多线程的实现机制?

96.开启多线程后,是否会存在线程并发安全问题?


91.Redis 6.0之前为什么一直不用多线程?

官方曾做过类似问题的回复:使用Redis时,几乎不存在CPU成为瓶颈的情况,Redis主要受限于内存和网络。例如一个普通的Linux系统上,Redis通过使用pipelining每秒可以处理100万个请求,所以如果应用程序主要使用o(N)或者  o(log(N))的命令,它几乎不会占用太多CPU。

使用了单线程后,可维护性高。多线程模型虽然在某些方面表现优异,但是它却引入程序执行顺序的不确定性,带来了并发读写的一些列问题,增加了系统复杂度,同时可能存在线程切换,甚至加锁解锁,死锁造成的性能损耗。Redis通过AE事件模型以及IO多路复用等技术,处理性能非常高,因此没有必要使用多线程。单线程机制使得Redis内部实现复杂度大大降低,Hash的惰性Rehash,Lpush等等“线程不安全”的命令都可以无锁进行。

92.Redis 6.0为什么要引入多线程呢?

Redis将所有的数据放在内存中,内存的响应时长大约为100纳秒,对于小数据包,Redis服务器可以处理80000到100000QPS,这也是Redis处理的极限了&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值