Redis - 通过单个命令减少 TTL
Redis - decrease TTL by single command
假设我有 TTL = 1 小时的 Redis 记录。
然后发生了一些事件,我想将此项的 TTL 重置为 min(current-TTL, 5min)。所以它会将 TTL 减少到 5 分钟。如果它还没有更低。
潜在的用例是,缓存失效的频率可能太高,“旧”缓存几乎和新缓存一样好,如果不是旧的,则 5 分钟。从第一个变化开始。
我知道我可以在一个命令中获取 TTL 并用第二个命令更新它,但出于各种原因我更愿意通过单个命令设置它。有办法吗?
编辑:我需要通过单个命令减少很多键。所以我想避免每条记录在redis和客户端库之间的数据往返。
没有单一的命令可以做到这一点,但您可以将逻辑包装在服务器端 Lua 脚本中并使用单一命令调用它。有关详细信息,请参阅 EVAL
命令。
假设我有 TTL = 1 小时的 Redis 记录。
然后发生了一些事件,我想将此项的 TTL 重置为 min(current-TTL, 5min)。所以它会将 TTL 减少到 5 分钟。如果它还没有更低。
潜在的用例是,缓存失效的频率可能太高,“旧”缓存几乎和新缓存一样好,如果不是旧的,则 5 分钟。从第一个变化开始。
我知道我可以在一个命令中获取 TTL 并用第二个命令更新它,但出于各种原因我更愿意通过单个命令设置它。有办法吗?
编辑:我需要通过单个命令减少很多键。所以我想避免每条记录在redis和客户端库之间的数据往返。
没有单一的命令可以做到这一点,但您可以将逻辑包装在服务器端 Lua 脚本中并使用单一命令调用它。有关详细信息,请参阅 EVAL
命令。