Redis线程IO模型与Redis6多线程

Redis是否为单线程的?
取决于我们看他的角度,对于客户端来说,只会有一个主线程去接收请求,Redis基于Reactor模式通过IO多路复用器给到队列一个个发送至文件事件分派器分发出去响应要处理的事件。

在这里插入图描述
但对于Redis自身来说,除了主线程外,还会开启一些后台线程,例如持久化,释放无用连接,删除大key等操作等等…

Redis6.0多线程
使用Redis时,CPU的读取速度几乎不会成为瓶颈,真正影响Redis的其实是网络与内存,就单线程模型而言,Redis的可维护性高,不会带来一系列的并发场景下的读写问题降低系统复杂度,Redis本身通过自己的单线程模型一样有非常高性能的处理能力,那么为什么Redis作者在6.0之后要引入多线程呢?
Redis在内存中读取一次时间大约耗时100纳秒,纳秒对于小数据包来说,Redis可以达到80000到100000QPS,当随着业务的复杂数据包的增大,集群模式下之间通信的消耗,以及分布式架构中的各项问题,使得Redis的吞吐量下降。对于Redis自身而言,我们抛开业务需求,主要占用Redis的其实是网络的IO消耗,提升网络带宽的同时充分利用服务器多核也就是开启多线程模式。

修改redis.conf

	io-threads 3    // 设置线程数
	io-threads-do-reads yes   //开启多线程,默认为禁用

在这里插入图片描述

线程数设置推荐小于机器核数入四核设置3个线程,8核设置5-7个线程
在官方公布的测试数据中在GET/SET命令在4线程IO时性能时相比几乎提升一倍以上

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值