面试题答案
一键面试常见Redis缓存过期策略
- 定时删除
- 原理:在设置键的过期时间的同时,创建一个定时器,当过期时间到达时,由定时器立即执行对键的删除操作。
- 优点:能立即释放过期键所占用的内存,内存利用率高。
- 缺点:大量过期键集中过期时,会占用较多CPU资源,影响Redis性能。
- 惰性删除
- 原理:键过期时不会立即删除,而是在每次访问该键时,检查键是否过期,如果过期则删除该键。
- 优点:对CPU友好,不会在过期时集中消耗CPU资源。
- 缺点:若过期键长时间未被访问,会一直占用内存,导致内存浪费。
- 定期删除
- 原理:Redis会定期随机抽取一定数量的键检查是否过期,并删除过期键。
- 优点:通过限制删除操作执行的时长和频率,在一定程度上平衡了CPU时间和内存空间。
- 缺点:无法保证所有过期键能及时删除,可能存在少量过期键长时间占用内存的情况。
对缓存命中率的影响
- 定时删除
- 由于能立即删除过期键,当数据更新频繁且过期时间短的场景下,如果能及时删除过期键,新请求不会访问到过期数据,理论上能维持较高的缓存命中率。但大量删除操作若影响Redis性能,导致响应变慢,可能间接影响缓存命中率。
- 惰性删除
- 只有在访问键时才检查是否过期,在过期键未被访问期间,其他请求可能继续获取到过期数据,降低缓存命中率。但如果过期键很少被再次访问,对缓存命中率影响不大。
- 定期删除
- 合理设置定期删除的频率和抽查数量,能在不过度消耗CPU的情况下,删除部分过期键,维持较高缓存命中率。若频率过低或抽查数量过少,可能导致较多过期键未及时删除,影响缓存命中率;若频率过高或抽查数量过多,影响Redis性能,也可能间接影响缓存命中率。