即使Redis中存在数据,Springboot Redis @cacheable始终返回null

时间:2019-08-07 11:48:23

标签: java spring-boot redis redis-cache

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

谁能指出做错了什么。

0 个答案:

没有答案