有没有机会取回密钥存储在Redis中的日期时间?

时间:2015-11-13 08:00:18

标签: redis counter

嗯,我想这个问题本身就是自我解释的。 我想知道密钥何时被存储或修改(即最后修改时间),这将是一个日期时间或unixts。绝对不是TTL。

这对于实现计数器和每次检查增量都很有用。并将增量与持续时间进行比较。

也许有更好的方法?

或者唯一的解决方案是使用datetime&存储对象。计数属性?而不是简单的价值?

1 个答案:

答案 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小时。以下是基于您想要的商务逻辑的许多不同情况。