0

我试图实现 Spring 数据 redis 并试图启用缓存。但我认为我做错了什么。我什至尝试过阅读文档并进行以下操作,但仍然无法做到这一点。我对 Spring Data Redis 很陌生。我正在使用 1.5.1-RELEASE 和 jedis 2.6.2。这是我添加单词的功能:

public Long addWordWithItsMeaningToDictionary (String word,
                                                   String meaning) {
        Long index = redisTemplate.opsForList().rightPush(word, meaning);
        return index;
    }

这是一个用于检索:

@Cacheable("words")
    public List<String> getAllTheMeaningsForAWord (String word) {
        List<String> meanings = redisTemplate.opsForList().range(word, 0, -1);
        System.out.println (word);
        return meanings;
    }

这是我对实现的理解,首先缓存将被命中,如果找到结果,则获取该结果,否则从redis中取出单词并将其存储在缓存中。这是异常堆栈跟踪:

线程“main”中的异常 org.springframework.dao.InvalidDataAccessApiUsageException: WRONGTYPE 对持有错误值的键的操作;嵌套异常是 redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE 对在 org.springframework.data.redis.connection.jedis.JedisExceptionConverter.convert(JedisExceptionConverter.java:44) 处持有错误类型值的键进行操作。 springframework.data.redis.connection.jedis.JedisExceptionConverter.convert(JedisExceptionConverter.java:36) 在 org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:37) 在 org.springframework.data.redis.FallbackExceptionTranslationStrategy。在 org.springframework.data 上翻译(FallbackExceptionTranslationStrategy.java:37)。

谁能告诉我,我做错了什么?或者如果我也需要在将记录放入 redis 之前启用缓存?

4

0 回答 0