【Redis】『2』NIO在redis中的应用和演变

关于I/O多路复用(事件驱动),首先要理解的是,操作系统为你提供一个功能,当你的某个socket可读或可写的时候,它可以给你一个通知。这样当配合非阻塞的socket使用时,只有当系统通知我哪个描述符可读了,我才去执行read操作,可以保证每次read都能读到有效数据而不做纯返回或无用功,写操作类似,操作系统的这个功能是通过select/poll/epoll/kqueue之类的系统调用函数来实现,这些函数都可以见识多个描述符的读写就绪状况,这样,多个描述符的I/O操作都能在一个线程内并发交替的顺序完成,这就叫着I/O多路复用,“多路”指的是多个网络连接,“复用”指的是复用同一个Redis处理线程,采用多路I/O复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络I/O的时间消耗),且Redis在内存中操作数据的速度非常快,也就是说内存内的操作不会成为影响Redis性能的瓶颈,所以Redis有很高的吞吐量。

Redis是单线,主要是指Redis的网络IO和键值对读写是由一个线程来完成的。,这也是Redis对外提供键值存储服务的主要流程。但Redis的其它功能,比如持久化,异步删除,集群数据同步等是由额外的线程执行的。为什么要使用单线程?我们经常会听到一种说法:“使用多线程,可以增加系统吞吐率,或者增加系统拓展性”,的确,对于一个多线程的系统来说,在有合理的资源分配的情况下,可以增加系统中处理请求操作的资源实体,进而提升系统能够同时处理的请求数,即吞吐率。但是,请你注意&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值