面试题答案
一键面试定期删除策略工作原理
- 抽样检查:Redis 并非对所有过期键进行扫描,而是每隔一段时间,从数据库的 key 空间中随机抽取一定数量的 key 进行检查。
- 删除过期键:对抽样到的 key,检查它们是否过期,如果过期则删除。
- 循环执行:这种抽样检查操作会周期性地循环执行,以保证数据库中过期键能在一定时间内被清理。
与定期删除相关的主要配置参数
- hz:
- 含义:
hz
参数定义了 Redis 服务器在一秒内执行多少次“serverCron”函数,该函数负责执行包括定期删除过期键等一系列后台任务。 - 影响:
hz
值越大,意味着 Redis 每秒执行“serverCron”函数的次数越多,也就有更多机会去检查和删除过期键,能更及时地清理过期键,但会增加 CPU 负载。默认值为 10,即每秒执行 10 次“serverCron”函数;若设置为 100,每秒执行 100 次,能更频繁检查过期键,但对 CPU 消耗更大。
- 含义:
- maxmemory-samples:
- 含义:在进行定期删除过期键的抽样检查时,每次抽样的 key 数量由
maxmemory-samples
决定。 - 影响:该值越大,每次抽样检查覆盖的范围越广,能发现更多过期键并删除,提高内存回收效率,但会增加检查的时间开销。若值设置过小,可能导致很多过期键长时间未被检查到,从而浪费内存。默认值为 5,即每次抽样检查 5 个 key。
- 含义:在进行定期删除过期键的抽样检查时,每次抽样的 key 数量由