配置Redis volatile-LRU淘汰策略时,能否用expiration=true替代超时时间?
关于Redis volatile-LRU策略的疑问解答
结论:无法通过直接设置"expiration字段为true"来替代具体过期时间
Redis内部没有单独的"expiration字段"开关操作,volatile-LRU策略的筛选逻辑仅针对已设置具体过期时间戳的key。如果不给key设置明确的超时值,Redis不会将其归类到"可被volatile-LRU淘汰"的候选池中。为什么必须设置具体过期时间?
Redis对key的过期管理基于时间戳实现:当你给key设置过期时间时,Redis会把该key及其过期时间存入专门的过期字典中。volatile-LRU执行淘汰时,只会从这个字典里的key中按LRU规则选择淘汰对象。没有设置过期时间的key不会进入这个字典,自然不会被该策略选中。替代方案
如果你不想让目标key很快过期,只需给它设置一个足够长的过期时间即可。比如设置10年的超时:SET your_key "your_value" EX 315360000这样既满足volatile-LRU策略的筛选条件,又能让key长期留存,只有在内存耗尽时,才会从这类带过期时间的key里按LRU规则淘汰。
内容的提问来源于stack exchange,提问作者sarika
相关产品推荐
相关产品推荐

