面试题答案
一键面试定期删除策略执行逻辑
- 时间间隔:Redis会定期(默认每100毫秒)检查一次过期键。这个时间间隔是可以通过配置文件调整的。
- 随机抽查:每次检查并不会遍历所有的键,而是从数据库中随机抽取一定数量的键(例如10个)进行检查。
- 过期删除:如果抽查到的键已经过期,就将其从数据库中删除。
- 循环执行:上述过程会周期性地不断执行,确保过期键能在一定时间内被发现并删除。
优势
- 内存友好:相较于惰性删除,定期删除能够主动删除过期键,及时释放内存,避免了大量过期键长时间占用内存的情况,减少了内存碎片的产生,提高了内存的利用率。
- 性能平衡:不像定时删除那样对CPU压力巨大(定时删除要对每一个键设置定时器,过期就删除),定期删除采用随机抽查的方式,在一定程度上减轻了CPU的负担,在内存和CPU之间找到了一个相对较好的平衡点。
不足
- 过期键清理不及时:由于是随机抽查,可能存在一些过期键长时间不被抽查到,从而不能及时被删除,仍然占用内存,这可能导致内存使用量高于预期。
- CPU时间分配不稳定:虽然总体上减轻了CPU压力,但如果在某一时刻抽查到大量过期键需要删除,仍然会在这一时刻占用较多的CPU时间,对系统的性能造成一定的波动影响。