Redis:如何更新密钥但不更改密钥的到期时间?

时间:2018-11-06 10:16:03

标签: redis set ttl

使用Redis作为缓存服务来缓存一些不重要的数据,并且在某些情况下需要更新该值而不重置或覆盖过期时间,有什么好的方法来解决此问题吗? 我搜索并发现以下2个解决方案

  1. 使用 setrange 命令,因为该值稍微复杂一点,所以在这种情况下不好用。
  2. 获取 ttl 时间,然后将其设置为更新值的到期时间。似乎有点多余。

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

2 个答案:

答案 0 :(得分:0)

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

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

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

这不会更改ttl

答案 1 :(得分:0)

你不需要做这两件事中的任何一件。您只需要在设置值时使用 KEEPTTL 标志。

像这样:

> set my_key this_is_my_value EX 60

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

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

> set my_key this_is_my_new_value KEEPTTL

有关 REDIS docs 的更多信息。