Hibernate (5.3.3.Final) + Redisson (3.17.7) в проекте SBT не удаляет кеш из Redis на основе настроенного TTLJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Hibernate (5.3.3.Final) + Redisson (3.17.7) в проекте SBT не удаляет кеш из Redis на основе настроенного TTL

Сообщение Anonymous »

Я использую проект Java-scala и настроил RedissonClient программно:

Код: Выделить всё

public class RedissonConfigurationFactory extends RedissonRegionFactory{

private static RedissonClient redisson;

@SuppressWarnings({"rawtypes", "unchecked"})
@OverRide
protected RedissonClient createRedissonClient(Map properties) {
if (redisson == null) {
Config config = new Config();
String redisHost = System.getenv().getOrDefault("REDIS_HOST", "localhost");
String redisPort = System.getenv().getOrDefault("REDIS_PORT", "6379");
String redisPassword = System.getenv("REDIS_PASSWORD");

config.setCodec(new SerializationCodec());

config.useSingleServer()
.setAddress("redis://" + redisHost + ":" + redisPort)
.setPassword(redisPassword)
.setDatabase(0)
.setConnectionPoolSize(64)
.setTimeout(3000)
.setRetryAttempts(3)
.setRetryInterval(1500);

redisson = Redisson.create(config);

}
return redisson;
}

}
И настроил этот класс в hibernate.cfg.xml:

Код: Выделить всё

RedissonConfigurationFactory

2
5000
LRU

Это мой класс сущности:

Код: Выделить всё

@org.hibernate.annotations.Cache(usage = org.hibernate.annotations.CacheConcurrencyStrategy.READ_WRITE, region = "my_region")
public class EntityClass{}
Даже после настройки этого свойства time_to_live в регионе запись кэша не удаляется из кэша Redis.
Я также проверил это с помощью графического интерфейса RedisInsights, там также для соответствующего ключа «Hash» TTL установлено значение «Без ограничений».
При проверке журналов Redisson MapCacheEvictionTask я также получаю оператор ниже журнала. для региона даже после того, как прошло время time_to_live:
"loggerName":"org.redisson.eviction.MapCacheEvictionTask", "message":"0 элементов выселено. Имя объекта: EntityClass"
По сути, когда TTL прошел, должен был быть сделан вызов БД, который не отображается в журналах и каждый раз, когда он выбирается из самого кеша. Невыселение может привести к бесконечному увеличению памяти сервера Redis, пока она не будет удалена или освобождена вручную.
Почему это свойство TTL может не применяться при Redisson?

Подробнее здесь: https://stackoverflow.com/questions/797 ... icting-the
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»