嗯,我想这个问题本身就是自我解释的。 我想知道密钥何时被存储或修改(即最后修改时间),这将是一个日期时间或unixts。绝对不是TTL。
这对于实现计数器和每次检查增量都很有用。并将增量与持续时间进行比较。
也许有更好的方法?
或者唯一的解决方案是使用datetime&存储对象。计数属性?而不是简单的价值?
答案 0 :(得分:1)
不,你不能得到那些数据,因为redis不会存储任何其他TTL。是的,您可以使用一些元数据解决方案来实现这一目标。
像(php示例):
function setKey($key, $value) {
$redis->set($key, $value);
$redis->hSetNx($key . 'meta', 'createdAt', time());
$redis->hSet($key . 'meta', 'updatedAt', time());
}
function setKeyTtl($key, $ttl) {
$redis->ttl($key, $ttl);
$redis->hSet($key . 'meta', 'ttlSetAt', time());
$redis->hSet($key . 'meta', 'ttl', $ttl);
$redis->ttl($key . 'meta', $ttl + 3600);
}
使用HSET作为元数据存储。将hSetNx用于只应设置一次的字段(例如createdAt
)。你对meta ttl的解决方法有所了解 - 在我的示例中,我使用meta ttl作为关键ttl + 1小时。以下是基于您想要的商务逻辑的许多不同情况。