2

我在使用 ioredis 时遇到了这个问题,我在其中创建了一个密钥并为该密钥设置了到期时间。我的代码看起来像这样

let temp1 = acct.limit;
let txn = array.length;
let cache = new ioredis(); // note that this is not the exact code snippet
let ttl = txn / temp1;
cache.set('key', true, Math.ceil(ttl));

我遇到的问题是,有时ttl是正数,有时是负数。因此,导致人们相信 -1 可能是无限的 ttl。但在进一步研究和反复试验后,任何小于或等于 0 的东西都会立即过期。所以我的问题是,为什么有些密钥即使设置了 ttl 也不会过期?

4

2 回答 2

0

键的 Redis EXPIRE 以 ttl 秒为单位设置。因此,任何小于或等于 0 的 ttl 值都会立即使密钥过期。这个问题不清楚,因为您已经解释过小于或等于 0 的任何值都会使密钥立即过期。

于 2020-05-06T02:42:19.390 回答
0

TTL命令返回三种类型的响应

  • 返回以秒为单位超时的键的剩余生存时间。
  • 如果键不存在,则返回 -2。
  • 如果密钥存在但没有关联的过期时间,则返回 -1。
于 2020-05-06T07:26:00.600 回答