gpt4 book ai didi

php - 在 Redis 中,您将如何更新 key 并重置原始 TTL?

转载 作者:IT王子 更新时间:2023-10-29 06:01:05 25 4
gpt4 key购买 nike

我通过 PHPRedis(实际上是围绕 PHPRedis 构建的更高级别的包装器)与 Redis 交互。我想更新一个键并在数据库中重置它,但是 TTL 应该在程序的当前点重置为原始值我的类不知道原始 TTL 是什么。

假设原来的 TTL 是 12 小时。我想做这样的事情:

redis->get($key)
$original_ttl = // figure it out
$new_value = something
redis->set($key, $new_value, $original_ttl)

然后我们以引用新值和另外 12 小时 ttl 的原始 key 结束。这可能吗?

最佳答案

只需使用两个命令:一个 SET 更新值,然后一个 EXPIRE更新 TTL。

更新:要检索原始 TTL,您必须将其存储在单独的 key 中。据我所知,你可以获得当前的TTL,但不是它的初始值。

所以它在伪代码中看起来像这样(REDIS 命令大写):

SET myKey value
EXPIRE myKey 3600
SET myKey:ttl 3600

将 TTL 固定为 3600s

然后

SET myKey newValue
ttlvalue = GET mykey:ttl
EXPIRE myKey ttlvalue

更新 2:

我的回答可能会根据 Agis 关于使用 SETEX 的建议得到改进,SETEX 会在一次操作中为给定 key 及其到期日期设置一个值。所以它会变成:

SETEX myKey 3600 value
SET myKey:ttl 3600

将 TTL 固定为 3600s

然后

ttlvalue = GET mykey:ttl
SETEX myKey ttlvalue newValue

更新值并重置其 TTL

关于php - 在 Redis 中,您将如何更新 key 并重置原始 TTL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22232443/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com