Redisson Cache Map не выселяется, если процесс завершен - PullRequest
1 голос
/ 12 марта 2019

Я использую Redisson RMapCache для обработки некоторых распределенных коллекций в моем приложении.

Срок действия ключей в этих коллекциях истекает через некоторое время, поэтому при добавлении ключей я устанавливаю TTL:

RMapCache<String, MyClass> cacheMap = GetMap("test");
cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);

Таким образом, через 20 секунд срок действия ключа истекает. Это прекрасно работает, если процесс не завершен до отметки времени истечения. Однако, если по какой-либо причине процесс умирает, ключ никогда не очищается, что означает, что выселение обрабатывается Redisson внутри процесса Java, а не самим Redis.

Есть ли способ заставить redisson использовать встроенную в Redis функцию EXPIRE? Так что процесс, который вставляется в карту, не отвечает за выселение ключей.

Я считаю, что текущая реализация редиссона чрезвычайно хрупкая.

1 Ответ

0 голосов
/ 16 июня 2019

Redis не предоставляет срок действия карты на TTL.В вашем случае вы можете использовать объект RBucket вместо:

redisson.getBucket(mapKey).set(mapValue, 10, TimeUnit.SECONDS);
...