Redis为什么这么快?

3 篇文章 0 订阅
2 篇文章 0 订阅

    今天我在一个技术群里提出一个问题:Redis为什么这么快,Redis的那些特性能够支持了它的高并发?

之前的我,也只是知道Redis是内存数据库,所以读取速度快;IO使用的是多路复用,使用一个线程来轮询描述符,减少了线程上下文的切换,将数据库的开、关、读、写都转化成了时间,所以IO时也有加速。虽然理解上就是这些(当然还有一些数据结构的原因,全程使用hash结构,加速读写)

    突然想写下来,供大家看一下,也想请大神批评指正一下。

    Redis的高并发和快速原因很多,总结一下几点:

        1. Redis是纯内存数据库,一般都是简单的存取操作,线程占用的时间很多,时间的花费主要集中在IO上,所以读取速度快。

        2. 再说一下IO,Redis使用的是非阻塞IO,IO多路复用,使用了单线程来轮询描述符,将数据库的开、关、读、写都转换成了事件,减少了线程切换时上下文的切换和竞争。

        3. Redis采用了单线程的模型,保证了每个操作的原子性,也减少了线程的上下文切换和竞争。

        4. 另外,数据结构也帮了不少忙,Redis全程使用hash结构,读取速度快,还有一些特殊的数据结构,对数据存储进行了优化,如压缩表,对短数据进行压缩存储,再如,跳表,使用有序的数据结构加快读取的速度。

        5. 还有一点,Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大。

     最后,附两张图,让大家更加深刻的理解Redis的架构和内存模型:

               

                      

                                          Redis的工作流程图


     

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值