redis 回收进程如何工作

👌redis回收进程如何工作的?

题目详细答案

Redis的回收进程负责定期扫描和删除过期键。服务器运行时自动执行。主要就是定期回收和惰性回收,其实也可以看之前的 redis 过期策略。来进行合二为一,其实二者答案差不多,就是内容有一定区别。

定期回收任务

Redis回收进程的核心是一个定期任务,这个任务在Redis的事件循环中执行。

事件循环:Redis使用一个单线程的事件循环模型来处理所有的客户端请求和后台任务。

定期任务:在事件循环中,Redis会定期触发一个函数来执行过期键的检查和删除操作。这个函数默认每100毫秒运行一次。

实现步骤如下:

  1. 选择数据库:每次执行定期任务时,Redis会遍历所有的数据库(默认16个)。
  2. 随机抽样:对于每个数据库,Redis会随机选择一部分带有过期时间的键进行检查(默认20个)。
  3. 检查过期键:检查这些键是否已经过期,如果过期则删除。
  4. 重复检查:如果发现超过一定比例的键是过期的(默认25%),则继续进行更多次的检查和删除,直到过期键的比例下降到合理范围内。

惰性回收

惰性回收不是一个独立的进程,而是每次客户端访问键时触发的检查机制。它的工作原理如下:

  1. 访问键:每当客户端访问一个键时,Redis会检查该键是否设置了过期时间。
  2. 检查过期:如果该键已经过期,Redis会立即删除该键,并返回空结果或相应的错误信息。
 wechat
天生我才必有用