我正在我的 springboot 应用程序中实现 redis db 和缓存。我在redis中插入数据并使用@CachePut将其添加到缓存中,我可以使用redis gui查看数据。在获取数据时,我使用 @Cacheable 注释,其键与缓存放置相同,但即使缓存中存在该值,它也始终返回 null 结果,甚至不调用数据库方法只会返回 null。
这是我的redis配置:
@Bean
public RedisTemplate<String, LTERequest> ulrCacheTemplate() {
RedisTemplate<String, LTERequest> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setEnableTransactionSupport(true);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
这是我的服务层
@Cacheable(value = "ulrs", key = "#sessionId")
public LTERequest getLTERequest(String sessionId) {
System.out.println("in cache comp");
logger.info(" Request UUID [{}] getting record from ULR cache for id [{}]",Thread.currentThread().getName(),sessionId);
return requestRepo.get(sessionId);
}
@CachePut(value = "ulrs", key = "#lterequest.sessionId")
public void addLTERequest(LTERequest lterequest, int partition) {
lterequest=requestRepo.add(lterequest,partition);
}
这是我的 LTERequest 课程:
public class LTERequest implements Serializable{
private static final long serialVersionUID = 1L;
private String imsi;
private String sessionId;
private long lastUpdateTimestamp;
}
谁能指出做错了什么。