【81、Redis的过期数据回收是怎么实现的,你们是怎么设置的】

216 阅读1分钟

Redis 中的过期数据回收是通过定期删除和惰性删除相结合的方式实现的。

  1. 定期删除:Redis 会在设定的时间间隔内,对过期的 key 进行一次扫描和删除操作。具体来说,每隔一段时间,Redis 就会遍历一定数量的数据库中的过期 key,并删除这些 key,以释放内存空间。可以通过设置 redis.conf 配置文件中的 hz 参数来控制定期删除的频率。
  2. 惰性删除:当客户端访问某个过期的 key 时,Redis 会判断这个 key 是否过期,如果过期则直接删除,这就是惰性删除。需要注意的是,惰性删除只会对访问过期 key 的请求进行检测,因此如果某个 key 一直未被访问,则即使已经过期,也不会被删除。可以通过设置 redis.conf 配置文件中的 maxmemory-policy 参数来控制惰性删除的策略。

在实际应用中,我们可以根据业务需求来设置 Redis 的过期时间和回收策略。一般来说,过期时间的设置应该考虑到数据的更新频率和读取频率,以及系统的内存资源情况。同时,回收策略的设置也应该根据具体的业务需求来调整,以达到最优的性能和资源利用率。常用的回收策略有 volatile-lruvolatile-ttlallkeys-lru 等,可以根据具体情况选择适合自己业务场景的策略。