2022年Redis最新面试题第6篇 - Redis淘汰策略

概要

  • Redis过期键的删除策略?
  • 你可以简单聊聊Redis内存淘汰机制(回收策略)

Redis 过期键的删除策略?

出现概率: ★★★★

Redis过期键的删除策略是:定期删除+惰性删除。

2022年Redis最新面试题第6篇 - Redis淘汰策略_第1张图片

1)、关于定期删除, Redis默认会每隔100ms就随机选取一些已经过期了的key,检查其是否过期,如果已经过期就删除。

不过假设Redis里放了100w个key,而且都设置了过期时间,你每隔几百毫秒,就检查100w个key,那 Redis基本上就卡死了,cpu负载也会很高的,基本都消耗在检查过期key上了。

注意,这里可不是每隔100ms就遍历所有的设置过期时间的key,那样就是一场性能上的灾难。实际情况是每次随机选取一些key进行检查和删除的。

但因为随机会带来不确定性,可能会导致很多过期key到了时间并没有被删除掉,那应该怎么办呢?所以就需要惰性删除了

关于定期删除源码解析:每当 Redis 服务器的周期性操作 redis.c/serverCron 函数执行时,redis.c/activeExpireCycle 会被调用。 activeExpireCycle 函数在规定的时间内,分多次遍历服务器中的各个数据库,从数据库的 expires 字典中随机检查一部分键的过期时间,并删除其中的过期键。

current_db 记录

你可能感兴趣的:(redis,数据库,缓存)