【发布时间】:2021-03-23 15:16:22
【问题描述】:
我正在使用client.setex() 创建一个过期时间为 3600 秒的 Redis 缓存,但我也会不时更新它,为此我使用的是client.set()。
想知道每次更新缓存时到期时间是否保持不变或延长 3600。
【问题讨论】:
我正在使用client.setex() 创建一个过期时间为 3600 秒的 Redis 缓存,但我也会不时更新它,为此我使用的是client.set()。
想知道每次更新缓存时到期时间是否保持不变或延长 3600。
【问题讨论】:
set() 将删除 Redis 中现有的过期时间。
你可以使用:
client.set(key,value, "EX", client.ttl(key))
用于继续过期时间。
更多详情:
【讨论】:
previous answer 是正确的。但是由于client.ttl(key),这涉及到另一个网络往返。
您应该考虑 KEEPTTL 参数和 SET 命令,该命令自 Redis 6.0 起可用。
client.set(key, value, "KEEPTTL")
与上一个相比,由于网络往返次数减少了一半,您的吞吐量将翻倍。
【讨论】: