Redis - 通过单个命令减少 TTL

Redis - decrease TTL by single command

假设我有 TTL = 1 小时的 Redis 记录。

然后发生了一些事件,我想将此项的 TTL 重置为 min(current-TTL, 5min)。所以它会将 TTL 减少到 5 分钟。如果它还没有更低。

潜在的用例是,缓存失效的频率可能太高,“旧”缓存几乎和新缓存一样好,如果不是旧的,则 5 分钟。从第一个变化开始。

我知道我可以在一个命令中获取 TTL 并用第二个命令更新它,但出于各种原因我更愿意通过单个命令设置它。有办法吗?

编辑:我需要通过单个命令减少很多键。所以我想避免每条记录在redis和客户端库之间的数据往返。

没有单一的命令可以做到这一点,但您可以将逻辑包装在服务器端 Lua 脚本中并使用单一命令调用它。有关详细信息,请参阅 EVAL 命令。