加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Redis为什么是单线程还这么快

发布时间:2019-06-18 00:23:50 所属栏目:编程 来源:Java星星
导读:Redis的高并发和快速缘故起因 1.redis是基于内存的,内存的读写速率很是快; 2.redis是单线程的,省去了许多上下文切换线程的时刻; 3.redis行使多路复用技能,可以处理赏罚并发的毗连。非阻塞IO 内部实现回收epoll,回收了epoll+本身实现的简朴的变乱框架。epoll
副问题[/!--empirenews.page--]

Redis为什么是单线程还这么快

Redis的高并发和快速缘故起因

1.redis是基于内存的,内存的读写速率很是快;

2.redis是单线程的,省去了许多上下文切换线程的时刻;

3.redis行使多路复用技能,可以处理赏罚并发的毗连。非阻塞IO 内部实现回收epoll,回收了epoll+本身实现的简朴的变乱框架。epoll中的读、写、封锁、毗连都转化成了变乱,然后操作epoll的多路复用特征,毫不在io上挥霍一点时刻。

下面重点先容单线程计划和IO多路复用焦点计划快的缘故起因。

为什么Redis是单线程的

1.官方谜底

由于Redis是基于内存的操纵,CPU不是Redis的瓶颈,Redis的瓶颈最有也许是呆板内存的巨细可能收集带宽。既然单线程轻易实现,并且CPU不会成为瓶颈,那就顺理成章地回收单线程的方案了。

2.机能指标

关于redis的机能,官方网站也有,平凡条记本轻松处理赏罚每秒几十万的哀求。

3.具体缘故起因

1)不必要各类锁的机能耗损

Redis的数据布局并不满是简朴的Key-Value,尚有list,hash等伟大的布局,这些布局有也许会举办很细粒度的操纵,好比在很长的列表后头添加一个元素,在hash傍边添加可能删除

一个工具。这些操纵也许就必要加很是多的锁,导致的功效是同步开销大大增进。

总之,在单线程的环境下,就不消去思量各类锁的题目,不存在加锁开释锁操纵,没有由于也许呈现死锁而导致的机能耗损。

2)单线程多历程集群方案

单线程的威力现实上很是强盛,每焦点服从也很是高,多线程天然是可以比单线程有更高的机能上限,可是在本日的计较情形中,纵然是单机多线程的上限也每每不能满意必要了,必要进一步探索的是多处事器集群化的方案,这些方案中多线程的技能照样是用不上的。

以是单线程、多历程的集群不失为一个时髦的办理方案。

3)CPU耗损

回收单线程,停止了不须要的上下文切换和竞争前提,也不存在多历程可能多线程导致的切换而耗损 CPU。

可是假如CPU成为Redis瓶颈,可能不想让处事器其他CUP核闲置,那怎么办?

可以思量多起几个Redis历程,Redis是key-value数据库,不是相关数据库,数据之间没有束缚。只要客户端分清哪些key放在哪个Redis历程上就可以了。

Redis单线程的是非势

1.单历程单线程上风

  1. 代码更清楚,处理赏罚逻辑更简朴
  2. 不消去思量各类锁的题目,不存在加锁开释锁操纵,没有由于也许呈现死锁而导致的机能耗损
  3. 不存在多历程可能多线程导致的切换而耗损CPU

2.单历程单线程破绽

  1. 无法施展多核CPU机能,不外可以通过在单机开多个Redis实例来完美;

IO多路复用技能

redis 回收收集IO多路复用技能来担保在多毗连的时辰, 体系的高吞吐量。

多路-指的是多个socket毗连,复用-指的是复用一个线程。多路复用首要有三种技能:select,poll,epoll。epoll是最新的也是今朝最好的多路复用技能。

这里“多路”指的是多个收集毗连,“复用”指的是复用统一个线程。回收多路

I/O

复用技能可以让单个线程高效的处理赏罚多个毗连哀求(只管镌汰收集IO的时刻耗损),且Redis在内存中操纵数据的速率很是快(内存内的操纵不会成为这里的机能瓶颈),首要以上两点培育了Redis具有很高的吞吐量。

Redis为什么是单线程还这么快

Redis为什么是单线程还这么快

Redis高并发快总结

1. Redis是纯内存数据库,一样平常都是简朴的存取操纵,线程占用的时刻许多,时刻的耗费首要齐集在IO上,以是读取速率快。

2. 再说一下IO,Redis行使的长短阻塞IO,IO多路复用,行使了单线程来轮询描写符,将数据库的开、关、读、写都转换成了变乱,镌汰了线程切换时上下文的切换和竞争。

3. Redis回收了单线程的模子,担保了每个操纵的原子性,也镌汰了线程的上下文切换和竞争。

4. 其它,数据布局也帮了不少忙,Redis全程行使hash布局,读取速率快,尚有一些非凡的数据布局,对数据存储举办了优化,如压缩表,对短数据举办压缩存储,再如,跳表,行使有序的数据布局加速读取的速率。

5. 尚有一点,Redis回收本身实现的变乱疏散器,服从较量高,内部回收非阻塞的执行方法,吞吐手段较量大。

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读