Redis:如何更新密钥但不更改其过期时间?

Redis: How to update a key but do not change it's expiration time?

使用Redis作为缓存服务来缓存一些不重要的数据,有一种情况需要更新值而不重置或者覆盖过期时间,请问有什么好的方法可以解决这个问题? 我搜索并找到了以下 2 个解决方案

  1. 使用setrange命令,由于取值比较复杂,不适合这种情况
  2. 获取ttl时间然后设置为更新值时的过期时间。好像有点多余

有解决这个问题的好主意吗?

解决此问题的另一种方法是使用 INCRBY

为此,您必须执行一些步骤。

  1. 获取现有值。例如,10.
  2. 确定更新value.For例,17.
  3. INCRBY 他们的价值相差17-10。也就是说,7

这不会改变 ttl

这两件事你都不需要做。您只需要在设置值时使用 KEEPTTL 标志。

像这样:

> set my_key this_is_my_value EX 60

这将为具有 60 秒到期时间的密钥设置一个值。

然后,当您更改值并且不想更改密钥的到期时间时,只需执行以下操作:

> set my_key this_is_my_new_value KEEPTTL

有关 REDIS docs 的更多信息。