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

标签 php redis

我通过 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/

相关文章:

php - 如何使用 Rediska 创建列表的新实例?

ruby-on-rails - 使用 sidekiq 处理两个单独的 redis 实例?

php - 将不同表中的值相加,从其他表中获取值

php - 需要有关构建无状态 Web 应用程序的信息

php - 使用 'or die()' 停止 PHP 中的错误

django - Memcache/Redis 的单独服务器?

amazon-web-services - Redis 自动缩放 Ec2

php - 如何强制 wordpress 模板解析代码而不是纯文本

php pdo 每隔一个元素红色

python - 将大型 .csv 处理成 Redis