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

He *_*ang 3 set ttl redis

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

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

有什么好主意来解决这个问题吗?

Pab*_*ruz 6

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

像这样:

> set my_key this_is_my_value EX 60
Run Code Online (Sandbox Code Playgroud)

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

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

> set my_key this_is_my_new_value KEEPTTL
Run Code Online (Sandbox Code Playgroud)

有关REDIS 文档的更多信息。