【发布时间】:2020-10-01 12:04:45
【问题描述】:
我正在尝试在 RedisHash 上配置 TTL。我想为所有密钥设置相同的到期时间。
第一个:我尝试在实体类上添加注释@RedisHash(value="MyHash",timeToLive=60)。
第二个:使用@TimetoLive 和@RedisHash(value="MyHash",timeToLive=60) 添加一个新字段作为过期字段
@RedisHash(value = "MyHash", timeToLive = 60L)
public class MyHash {
.../attributes with few indexes
@TimeToLive
private Long expiration;
}
3rd:添加了带有 KeyspaceConfiguration 的 @EnableRedisRepositories
@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
【问题讨论】: