Redis 单线程设计,但为什么那么快!!!

1、内存型数据库

Redis 是完全基于内存的数据库,它绝大部分请求是纯粹的内存操作,所以快速。

2、特殊的数据结构

Redis 支持5种数据类型:String、List、Hash、Set 和 Zset,数据结构相对简单,所以操作起来也相对快速。

3、单线程

Redis 采用单线程模型,单线程的好处就是避免了多线程对数据竞争的问题,加锁的问题和上下文的切换问题。

那为什么要采用单线程呢,官方给我们的解释是:Reids 的瓶颈不在CPU,而在于内存或者网络的带宽,综合考虑后采用了单线程。这里的单线程也特指在处理网络请求是只使用一个线程,而 Redis 本身在持久化的时候还是会用到额外的线程,为此在 Redis4.0开始也支持了多线程,但也只是针对部分命令采用,例如:UNLINK、FLUSHALL 等。

4、IO多路复用

Redis 采用了非阻塞的IO多路复用技术。Redis本身就是一个事件驱动程序,Redis 把 socket 抽象成文件事件。所以这里说的IO多路复用就是文件事件处理器以单线程的方式,来监听相关的套接字(accept、read、write、close)

总结:

1、Redis 是内存型数据库

2、 Redis 特殊的数据结构

3、单线程避免锁的竞争

4、IO多路复用

以上四点就是Redis是单线程,但是快的原因!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值