#java #redis #redisson
#java #redis #redisson
Вопрос:
Допустим, я хотел бы сохранить объект A
в Redis, используя RMapCacheReactive
и Redisson .
Вначале я поместил его в карту с TTL 10 000 мс по ключу B
. Сразу после этого я помещаю тот же объект A
с тем же ключом B
, но с нулевым TTL.
Согласно документации, метод put «сохраняет значение, сопоставленное с ключом, с указанным временем жизни», поэтому я ожидал, что A
оно будет сохранено на этой карте постоянно.
Однако он был фактически удален после того, как прошло 10 000 мс (получить его с помощью клиента Redisson стало невозможно). Есть ли что-то, что я ошибся?
Я проверил это поведение в версиях 3.13.4 и 3.12.5 Redisson.
Комментарии:
1. вы пытались установить TTL как -1?
2. У RMapCacheReactive нет такого метода. И даже если это так, не следует ли автоматически изменять TTL после того, как я добавлю новое значение тем же ключом с новым TTL?
3. Это то, что я говорю, что использование ttl = 0, вероятно, не сработало, поскольку оно не обновило ключ ttl = 0 означает, что у этого ключа нет времени жизни, -1 означает бесконечный.
4. Согласно документации, 0 означает бесконечность («@param ttl — время жизни для ввода ключа значения. Если 0, то сохраняется бесконечно. «). Если я попытаюсь использовать -1 вместо нуля, я получу исключение «, вызванное: java.lang. Исключение IllegalArgumentException: ttl не может быть отрицательным »
Ответ №1:
Я сообщил об этой проблеме на GitHub https://github.com/redisson/redisson/issues/3078 . Оказалось, что это ошибка, которая должна быть исправлена в следующей версии (3.13.5).