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

同时指定EX和KEEPTTL选项时Redis SET命令的执行逻辑是什么?

Redis SET命令同时指定EX和KEEPTTL的执行规则

你推测的三种情况中,第3种是正确的:忽略KEEPTTL选项,无论键是否已存在,均按EX设置过期时间。


执行逻辑说明

KEEPTTL参数的生效前提是你没有指定任何其他过期类选项(包括EX、PX、EXAT、PXAT等),当你同时传入显式过期配置和KEEPTTL时,Redis会优先处理显式过期参数,直接忽略KEEPTTL配置。

实际操作验证

你可以通过以下命令测试验证:

  1. 键存在的场景
# 先写入带过期时间的测试键
127.0.0.1:6379> SET test_key val1 EX 100
OK
127.0.0.1:6379> TTL test_key
(integer) 95

# 同时传入EX 20和KEEPTTL覆盖写入
127.0.0.1:6379> SET test_key val2 EX 20 KEEPTTL
OK

# 查看TTL,已更新为EX指定的20秒左右,KEEPTTL未生效
127.0.0.1:6379> TTL test_key
(integer) 17
  1. 键不存在的场景
# 对不存在的键同时传入EX 30和KEEPTTL写入
127.0.0.1:6379> SET new_key val3 EX 30 KEEPTTL
OK

# 查看TTL,已按EX指定设置30秒过期,KEEPTTL未生效
127.0.0.1:6379> TTL new_key
(integer) 28

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:07