分布式服务

redis单线程为什么这么快?

2022-02-19  本文已影响0人  M_lear

redis单线程为什么这么快?

快的原因:

  1. 首先redis不是完全单线程的,一些耗时操作也会异步去处理,比如持久化相关的工作(RDB和AOF重写)。
  2. 是基于内存操作的。
  3. 基于IO多路复用,不在网络IO上浪费时间。

单线程的原因:

  1. redis的瓶颈在内存大小或网络带宽上,而不在cpu上。
  2. 单线程可以避免线程上下文切换和锁争用。

其他

RDB:持久化某个时间点的数据快照。
实现:通过fork一个子进程来完成。
fork使用了“写时复制”(COW)技术,fork后,父子进程使用不同的虚拟内存空间,但用的是相同的物理内存空间。只有当父子进程中有更改相应段的行为发生时,再为子进程相应的段分配物理空间。

AOF:追加写操作。
缺点:AOF文件大。

所以有AOF后台重写。
也是通过fork子进程来完成。
把数据快照转化成一个个写操作。


redis过期策略:
定期删除+惰性删除

定期删除:【在过期字典里】,定期随机检查一部分key。

内存淘汰策略:
采样一定数量的key,然后LRU。

上一篇 下一篇

猜你喜欢

热点阅读