You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redis实例内存满时如何仅驱逐set1键,保障set2键正常过期?

可以实现该需求

核心方案(基于Redis 6.2+版本)

通过Redis的键模式匹配驱逐功能,结合统一的键命名规范,就能精准控制仅驱逐set1中的键,同时保证set2的键仅在自身过期时间到达时失效。

  • 第一步:统一键命名规范
    给set1的所有键添加专属前缀(比如set1:),set2的所有键添加另一前缀(比如set2:),确保两组键的命名空间完全隔离。

  • 第二步:配置内存驱逐规则
    设置Redis的内存上限后,指定以下两个核心配置:

    1. 将maxmemory-policy设为volatile-lru——该策略仅对带有过期时间的键执行LRU驱逐,完全匹配你的场景(两组键都已设置过期时间)。
    2. 将maxmemory-eviction-keys-pattern设为set1:*——让Redis仅匹配set1前缀的键进行驱逐操作,set2的键不会被纳入驱逐候选池。
  • 动态配置命令(无需重启Redis)

    CONFIG SET maxmemory <你的内存上限值>
    CONFIG SET maxmemory-policy volatile-lru
    CONFIG SET maxmemory-eviction-keys-pattern "set1:*"
    
  • 永久配置(写入Redis配置文件)

    maxmemory 10GB  # 替换为你的实际内存上限
    maxmemory-policy volatile-lru
    maxmemory-eviction-keys-pattern set1:*
    

低版本Redis替代方案(6.2以下)

如果无法升级Redis版本,可通过业务层逻辑规避:

  • 给set2的键设置极长的过期时间,并在业务中定期自动续期,确保其不会被volatile-lru策略选中驱逐;
  • 或者将set2的键存储到另一个独立的Redis实例中,彻底实现内存隔离,但这种方案会增加部署复杂度。

内容的提问来源于stack exchange,提问作者Artyom Katlinsky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 13:01:19