Redis 原理(一):线程IO模型

Redis 是个单线程程序!这点必须铭记。

正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些时间复杂度为 O(n) 级别的指令,一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。这里需要注意的是,redis对外的网络请求服务是单线程的,但是其内部其他模块还是多线程的操作。

Redis 单线程为什么还能这么快?

因为它所有的数据都在内存中,所有的运算都是内存级别的运算,内存结构的特点决定了它的高性能特点。

Redis 单线程如何处理那么多的并发客户端连接?

那为什么能处理那么多的高并发客户端连接?(qps 可以达到5w,Mysql qps可以达到2000)Redis是单线程的,多个链接过去还是单线程处理,但Redis的瓶颈并不在处理上,而是网络传输,连接池多个连接并发发送过去的请求可以大大加快网络通信的效率,再加上Redis使用Linux底层多路I/O复用模型,才是Redis高吞吐量的精髓所在。

Redis会将每个客户端关联到两个队列,指令队列和响应队列。客户端的指令会通过指令队列来顺序处理,先到的客户端指令先处理。Redis服务器通过响应队列来将指令的返回结果给到客户端。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值