我在ioredis中遇到了这个问题,在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也不会过期?
2条答案
按热度按时间cwdobuhd1#
redis expire for a key设置为ttl秒。因此,任何小于或等于0的ttl值都将立即使密钥过期。这个问题不清楚,因为您已经解释过,任何小于或等于0的值都将使密钥立即过期。
velaa5lx2#
TTL
命令返回三种类型的响应;返回超时键的剩余生存时间(秒)。
如果键不存在,则返回-2。
如果密钥存在但没有关联的expire,则返回-1。