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

咨询向已超时的Redis键执行SADD命令的具体行为

Redis SADD命令对已过期键的行为

问题背景

Redis官方文档说明:

当客户端尝试访问某个键,且发现该键已超时,该键会被被动过期。

需求场景:

  • 通过SADD命令创建带TTL的字符串集合键(键不存在时自动创建)
  • 后续再次执行SADD时,期望:若键已过期则重建后添加元素,若未过期则直接向现有集合添加新元素

核心问题

向处于“超时”状态的键执行SADD命令时,Redis会如何处理?是报错,还是自动重建键并执行添加操作?

解答

当你对已过期的键执行SADD时,Redis会先触发被动过期机制:立即删除这个过期的键,随后将该键视为「不存在」,执行标准的SADD逻辑——自动创建新键,再把元素添加进去。

整个过程不会报错,完全符合你的预期:过期键会被清理,之后重建键并正常完成元素添加。

举个流程示例:

  1. 执行SADD myset "a"创建键,再用EXPIRE myset 10设置10秒TTL
  2. 10秒后键过期
  3. 执行SADD myset "b",Redis发现键已过期,先删除它,再创建新的myset并添加"b"

补充说明:Redis的被动过期是在访问键的瞬间触发的,所有会访问键的读写命令(包括SADD)都会触发这个清理动作,之后再执行命令本身的逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:32:48