1

我正在我的 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;
}

谁能指出做错了什么。

4

0 回答 0