侧边栏壁纸
博主头像
再见理想博主等级

只争朝夕,不负韶华

  • 累计撰写 112 篇文章
  • 累计创建 64 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

Redis性能分析

再见理想
2022-05-27 / 0 评论 / 0 点赞 / 295 阅读 / 691 字

一,首先Redis为什么这么快?

1.基于内存,不会受到硬盘IO速度的限制

2.**单线程,避免了多线程切换导致的CPU消耗,也不用考虑锁的问题,**不存在加锁释放锁的操作,也不存在因死锁而导致的性能消耗;

3.使用多路I/O复用模型,非阻塞IO

多路I/O复用模型 是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。

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

二,Redis为什么是单线程?

因为 Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦)。

也就是说,因为单线程实现及维护的成本低,加上单线程的性能已经非常高,所以就没用多线程。

注意这里的单线程,只是在处理我们的网络请求时只有一个线程来处理,Redis Server在运行时肯定不止一个线程,比如在持久化时会以子线程的方式执行。

三,Redis的瓶颈

机器内存大小

因为redis的数据放在内存里,所以存放数据量的多少取决于内存的多少

网络带宽

Redis客户端执行一条命令分为如下四个过程:

1)发送命令

2)命令排队

3)命令执行

4)返回结果

其中1)+4)称为Round Trip Time(RTT,往返时间)

0

评论区