Срок действия кэша Redis

Я столкнулся с этой проблемой с 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 означает неограниченный срок жизни. Но при дальнейших исследованиях, а также проб и ошибок все, что меньше или равно 0, немедленно теряет силу. Итак, мой вопрос действительно в том, почему срок действия некоторых ключей не истекает даже при установленном ttl?


person Francis Salvamante    schedule 06.05.2020    source источник


Ответы (2)


Redis EXPIRE для ключа устанавливается в секундах ttl. Таким образом, все, что меньше или равно 0 для значения ttl, немедленно истечет срок действия ключей. Вопрос не ясен, потому что вы уже объяснили, что все, что меньше или равно 0, немедленно истечет срок действия ключа.

person vineethgn    schedule 06.05.2020

TTL возвращает три типа ответов ;

  • Возвращает оставшееся время жизни ключа с тайм-аутом в секундах.
  • Возвращает -2, если ключ не существует.
  • Возвращает -1, если ключ существует, но не имеет связанного срока действия.
person Ersoy    schedule 06.05.2020