为什么说Redis是单线程的以及为什么Redis这么快

一、Redis为什么这么快

Redis是一个基于内存的采用单进程单线程模型的key-value数据库,由c语言编写,官方提供的数据是可以达到100000+QPS。为什么能这么快,主要有以下几点:

  • 完全基于内存,绝大多数请求都是纯粹的内存操作,非常快速。数据存储在内存中相当于HashMap,查找和操作时间复杂度都是O(1)。
  • 采用单线程,避免了不必要的竞争和上下文切换,也不存在多线程或多进程导致的切换而消耗CPU。因为是单线程的,也不需要去考虑锁的问题,不存在加锁或释放锁操作。
  • 使用多路IO复用模型,非阻塞IO。(epoll)
  • 数据结构简单,对数据操作也简单,Redis中的数据结构时专门进行设计的

二、多路IO复用模型

多路IO复用模型是利用select、poll、epoll可以同时监察多个流的IO事件的能力。在空闲的时候会把当前线程阻塞掉,当一个或多个流中有IO事件时,就把当前线程从阻塞态唤醒。于是程序就会轮询一遍所有的流,并以此处理就绪的流,这种做法避免了大量无用操作。

这里的多路是指多个网络连接,复用指的是复用一个或多个线程。采用多路复用可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)。且Redis在内存中操作数据的速度非常快,内存不会成为影响Redis性能的瓶颈,主要由以上几点造就了Redis具有很高的吞吐量。

三、为什么Redis是单线程的

Redis是基于内存的操作,CPU不是Redis的瓶颈(一个CPU就够用了),Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章的采用单线程方案了。(我们一直在强调单线程,只是在处理网络请求的时候只有一个线程来处理,一个正式的Redis Server运行时肯定不是单线程的)。

文章参考:https://blog.csdn.net/xlgen157387/article/details/79470556

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值