Redis:如何更新密钥但不更改其过期时间?
Redis: How to update a key but do not change it's expiration time?
使用Redis作为缓存服务来缓存一些不重要的数据,有一种情况需要更新值而不重置或者覆盖过期时间,请问有什么好的方法可以解决这个问题?
我搜索并找到了以下 2 个解决方案
- 使用setrange命令,由于取值比较复杂,不适合这种情况
- 获取ttl时间然后设置为更新值时的过期时间。好像有点多余
有解决这个问题的好主意吗?
解决此问题的另一种方法是使用 INCRBY。
为此,您必须执行一些步骤。
- 获取现有值。例如,10.
- 确定更新value.For例,17.
- 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 的更多信息。
使用Redis作为缓存服务来缓存一些不重要的数据,有一种情况需要更新值而不重置或者覆盖过期时间,请问有什么好的方法可以解决这个问题? 我搜索并找到了以下 2 个解决方案
- 使用setrange命令,由于取值比较复杂,不适合这种情况
- 获取ttl时间然后设置为更新值时的过期时间。好像有点多余
有解决这个问题的好主意吗?
解决此问题的另一种方法是使用 INCRBY。
为此,您必须执行一些步骤。
- 获取现有值。例如,10.
- 确定更新value.For例,17.
- 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 的更多信息。