作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我通过 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/
我是一名优秀的程序员,十分优秀!