Redis核心技术及实战(三.为什么单线程的Redis那么快)

三:为什么单线程的Redis那么快?

原文:《03丨高性能IO模型:为什么单线程Redis能那么快?》

注:Redis的单线程是指网络IO和键值对读写是单线程的,而其它功能如持久化、异步删除、集群数据同步等其实是额外线程完成的。

Redis为什么不用多线程?

系统中会存在很多被多线程同时访问的共享资源,比如共享的一个数据结构,如果是多线程的话,对于这个共享资源还要制定同步机制,不仅不会提供吞吐率,反而会增大开销、提高系统的复杂度。

为什么单线程还这么快?除了上节讲的两个原因外,还有一个原因,Redis采用了多路复用机制,使其在网络IO操作中能并发处理大量请求。

Redis的多路复用机制:select/epoll机制,一个Redis线程会对应一个selector选择器,selector会一直监听连接请求和数据请求,一旦有请求到达,就会放到事件队列中,交给Redis处理。为了在请求到达时能通知Redis线程,该机制提供了基于事件的回调机制,针对不同事件的发生会调用不同的函数,比如有连接请求和读数据请求到达时,这两个请求分别对应Accept事件和Read事件,内核监听到有这两个请求时,就会触发Accept事件和Read事件,此时,内核就会回调Redis对应的accept和read函数进行处理,如此一来就充分利用了cpu,不会造成阻塞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值