问题描述
冒着自欺欺人的风险,我有一个关于redis的问题,困扰了我2天。 我有一个带有 spring boot 2.4.0 的基本项目(包括 spring-data-redis)。 我有以下 RedisEntity:
@RedisHash
@Getter
@Setter
@ToString
public class RedisEntity implements Serializable {
private @Id String id;
private @Indexed String secondaryIndex;
private @TimetoLive Long expirationTime;
public String persistEntity() {
RedisEntity myEntity = new RedisEntity();
myEntity.setId("1234");
myEntity.setExpirationTime(10L);
myEntity.setSecondaryIndex("456");
cacheTemplate.opsForValue().set(myEntity.getId(),myEntity,myEntity.getExpirationTime(),TimeUnit.SECONDS);
log.info("Saved entity to REdis! Entity=" + myEntity);
return myEntity.toString();
}
redis模板配置如下:
@Bean
public Redistemplate redistemplate(RedisConnectionFactory rcf) {
return createTemplate(rcf,new Jackson2JsonRedisSerializer(RedisEntity.class));
}
private <K,V,S extends RedisSerializer> Redistemplate<K,V> createTemplate(
RedisConnectionFactory factory,S valueSerializer) {
Redistemplate<K,V> redistemplate = new Redistemplate<>();
redistemplate.setConnectionFactory(factory);
redistemplate.setKeySerializer(new StringRedisSerializer());
redistemplate.setValueSerializer(valueSerializer);
redistemplate.setHashKeySerializer(new StringRedisSerializer());
redistemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
redistemplate.afterPropertiesSet();
return redistemplate;
}
实体保存在redis中,但是当它过期时,我无法检索值(幻影实体不存在)
我已将 @EnableRedisRepositories(shadowcopy = Shadowcopy.ON)
放在我的主要课程上,但无济于事。
当实体过期时,redis 删除所有内容。
有人遇到过类似的事情吗?我是否需要手动保存副本并将其过期时间设为 5 分钟?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)