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

Is there any chance to get back the date time when a Key was stored in Redis?

好吧,我想这个问题本身就是不言自明的。 我想知道何时存储或修改了密钥(即上次修改时间)那将是日期时间或 unixts。绝对不是TTL。

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

也许有更好的方法?

或者唯一的解决方案是存储具有日期时间和计数属性的对象?而不是简单的值?

不,您无法获取该数据,因为 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)。您应该了解元 ttl 的解决方法 - 在我的示例中,我使用元 ttl 作为密钥 ttl + 1 小时。根据您想要的业务逻辑,这里有许多不同的案例。