Redis面试题, redis 的过期策略可以说说吗?
Redis面试题, redis 的过期策略可以说说吗?
QA
Step 1
Q:: Redis的过期策略有哪些?
A:: Redis提供了三种主要的过期策略:1) 定时删除:为每个设置了过期时间的键设置一个定时器,时间一到,立即删除。2) 惰性删除:只在访问某个键时,才检查该键是否过期,如果过期则删除。3)
定期删除:Redis会每隔一段时间随机抽取一部分键进行过期检查,并删除其中的过期键。这些策略结合使用,平衡了内存释放和CPU资源消耗。
Step 2
Q:: Redis定时删除策略有什么优缺点?
A:: 定时删除策略的优点是过期键可以及时删除,能够立即释放内存。缺点是对CPU的消耗比较大,特别是在设置了大量过期键的情况下,会造成性能瓶颈,因此Redis不单独使用定时删除策略。
Step 3
Q:: Redis惰性删除策略有什么优缺点?
A:: 惰性删除策略的优点是只在访问键时才进行过期检查,降低了CPU的消耗。缺点是如果过期键长期不被访问,会占用内存资源,导致内存泄漏的风险。因此,惰性删除通常与定期删除策略结合使用。
Step 4
Q:: Redis定期删除策略如何工作?
A:: 定期删除策略是Redis默认启用的一种策略,它会在后台每隔一定时间(默认100
ms)随机抽取一些设置了过期时间的键进行检查,并删除其中的过期键。这样可以减少内存占用,但因为是随机抽取,可能会有部分过期键得不到及时删除。
Step 5
Q:: Redis的过期键可能会导致哪些问题?
A:: 过期键如果没有及时删除,会导致内存占用增加,可能出现内存泄漏的情况。此外,大量过期键同时到期可能引发Redis性能抖动,导致系统响应时间增加。因此,合理设置过期策略对系统性能至关重要。
Step 6
Q:: 如何配置和优化Redis的过期策略?
A:: 可以通过调整maxmemory-policy
配置项,选择合适的内存淘汰策略,比如volatile-lru
、allkeys-lru
等。同时,适当调整定期删除的频率(hz
参数)和每次检查的键数量(active-expire-effort
参数),可以在内存和CPU使用之间取得平衡。