Я использую Redisson RMapCache для обработки некоторых распределенных коллекций в моем приложении.
Срок действия ключей в этих коллекциях истекает через некоторое время, поэтому при добавлении ключей я устанавливаю TTL:
RMapCache<String, MyClass> cacheMap = GetMap("test");
cacheMap.put("DTO1", myClassInstance, 20, TimeUnit.SECONDS);
Таким образом, через 20 секунд срок действия ключа истекает. Это прекрасно работает, если процесс не завершен до отметки времени истечения. Однако, если по какой-либо причине процесс умирает, ключ никогда не очищается, что означает, что выселение обрабатывается Redisson внутри процесса Java, а не самим Redis.
Есть ли способ заставить redisson использовать встроенную в Redis функцию EXPIRE? Так что процесс, который вставляется в карту, не отвечает за выселение ключей.
Я считаю, что текущая реализация редиссона чрезвычайно хрупкая.