Я пытаюсь настроить TTL на RedisHash. Я хочу установить одинаковый срок действия для всех ключей.
1-й: Я попытался добавить аннотацию @RedisHash (value = "MyHash", timeToLive = 60) в класс сущности.
2-й: добавить новое поле в качестве истечения срока действия с помощью @TimetoLive вместе с @RedisHash (значение = "MyHash", timeToLive = 60)
@RedisHash(value = "MyHash", timeToLive = 60L)
public class MyHash {
.../attributes with few indexes
@TimeToLive
private Long expiration;
}
3-й: добавлен @EnableRedisRepositories с KeyspaceConfiguration
@EnableRedisRepositories(basePackageClasses = MyHash.class, keyspaceConfiguration = MyKeyspaceConfiguration.class)
public class RedisConfig {
//LettuceConnectionFactory
//RedisTemplate
}
public class MyKeyspaceConfiguration extends KeyspaceConfiguration {
@Override
public boolean hasSettingsFor(Class<?> type) {
return true;
}
@Override
public KeyspaceSettings getKeyspaceSettings(Class<?> type) {
KeyspaceSettings keyspaceSettings = new KeyspaceSettings(MyHash.class, "MyHashlog");
keyspaceSettings.setTimeToLive(60L);
return keyspaceSettings;
}
}
Мой репозиторий:
public interface MyHashRepository extends CrudRepository<MyHash, Long> {
List<MyHash> findByApplicationId(String applicationId) ;
}
Все вышеперечисленные подходы не устанавливают истечения срока действия. Когда я проверяю Redis, он показывает -1.
TTL MyHash:applicationId:e1hd9-w6q0s-5jd3e-wi2h4
(integer) -1