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

标签 redis set ttl

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

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

有什么好办法可以解决这个问题吗?

最佳答案

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

像这样:

> set my_key this_is_my_value EX 60

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

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

> set my_key this_is_my_new_value KEEPTTL

有关 REDIS docs 的更多信息.

关于Redis:如何更新 key 但不更改其过期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169840/

相关文章:

java - 有没有等同于 Redis 排序集(zset)的 Java 数据结构

java - Spring 使用 Redis @Cacheable

redis - 为什么我在 REDIS 控制台中得到 "(error) ERR unknown command: redis-cli"?

c# - IRedis订阅连接

c++ - 为什么在为数组分配新值时会崩溃?

amazon-web-services - Cloudfront 如何每次都避免 If-Modified-Since header 请求

c# - 如何将 ServiceStack RegistrationFeature 插件与 Redis 一起使用?

java - 我可以使用 java.util.Set 在 Java 中为 DFA 实现状态转换吗

java - 从java中的集合中删除重复元素

javascript - 如何使用 amqp.node 使rabbitmq消息过期