Spring 如何使用redisTemplate在redis中读取@Cacheable数据?

Spring 如何使用redisTemplate在redis中读取@Cacheable数据?,spring,redis,spring-data,spring-cache,spring-data-redis,Spring,Redis,Spring Data,Spring Cache,Spring Data Redis,我正在使用@Cacheable将数据缓存到redis中 @CacheConfig(cacheNames=“configDao”) 那很好用 现在我想构建API,使用redisTemplate直接读取/更新/删除redis中的数据 如果我使用redisTemplate.opsForValue().get(“configA”)来获取特定值,它可以正常工作,但我希望使用扫描或范围操作来获取configDao中的所有数据 我尝试了redisTemplate.opsForZSet().range(“con

我正在使用@Cacheable将数据缓存到redis中

@CacheConfig(cacheNames=“configDao”)

那很好用

现在我想构建API,使用redisTemplate直接读取/更新/删除redis中的数据

如果我使用redisTemplate.opsForValue().get(“configA”)来获取特定值,它可以正常工作,但我希望使用扫描或范围操作来获取configDao中的所有数据

我尝试了redisTemplate.opsForZSet().range(“configDao~keys”,0,-1)以及 redisTemplate.opsForZSet().scan(“configDao~keys”,scanpoptions.NONE) 但失败的例外是: 2017-01-21 13:27:04错误2252896[http-nio-8080-exec-6]o.s.b.w.s.ErrorPageFilter-由于异常[无法读取JSON:无法识别的令牌'configA':应为'true','false'或'null') 在[来源:[B@778c300c;第1行,第69列];嵌套异常为com.fasterxml.jackson.core.JsonParseException:无法识别的标记'configA':应为('true'、'false'或'null') 在[来源:[B@778c300c;行:1,列:69]] org.springframework.data.redis.serializer.SerializationException:无法读取JSON:无法识别的标记“configA”:应为('true'、'false'或'null') 在[来源:[B@778c300c;第1行,第69列];嵌套异常为com.fasterxml.jackson.core.JsonParseException:无法识别的标记'configA':应为('true'、'false'或'null') 在[来源:[B@778c300c;行:1,列:69] 位于org.springframework.data.redis.serializer.GenericJackson2JSONRedisializer.deserialize(GenericJackson2JSONRedisializer.java:130) 位于org.springframework.data.redis.serializer.GenericJackson2JSONRedisializer.deserialize(GenericJackson2JSONRedisializer.java:109) 位于org.springframework.data.redis.serializer.SerializationUtils.deserializeValues(SerializationUtils.java:50) 位于org.springframework.data.redis.serializer.SerializationUtils.deserialize(SerializationUtils.java:58) 位于org.springframework.data.redis.core.AbstractOperations.deserializeValues(AbstractOperations.java:207) 位于org.springframework.data.redis.core.DefaultZSetOperations.range(DefaultZSetOperations.java:105) 原因:com.fasterxml.jackson.core.JsonParseException:无法识别的令牌'configA':应为('true'、'false'或'null') 在[来源:[B@778c300c;行:1,列:69] 位于com.fasterxml.jackson.core.JsonParser.\u constructError(JsonParser.java:1702) 在com.fasterxml.jackson.core.base.ParserMinimalBase.\u报告错误(ParserMinimalBase.java:558) 位于com.fasterxml.jackson.core.json.UTF8StreamJsonParser.\u reportInvalidToken(UTF8StreamJsonParser.java:3528) 位于com.fasterxml.jackson.core.json.UTF8StreamJsonParser.\u handleUnexpectedValue(UTF8StreamJsonParser.java:2686) 在com.fasterxml.jackson.core.json.UTF8StreamJsonParser._nextotokennotinobject(UTF8StreamJsonParser.java:878) 位于com.fasterxml.jackson.core.json.UTF8StreamJsonParser.nextToken(UTF8StreamJsonParser.java:772) 位于com.fasterxml.jackson.databind.ObjectMapper.\u initForReading(ObjectMapper.java:3834) 位于com.fasterxml.jackson.databind.ObjectMapper.\u readMapAndClose(ObjectMapper.java:3783) 位于com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2929) 位于org.springframework.data.redis.serializer.GenericJackson2JSONRedisializer.deserialize(GenericJackson2JSONRedisializer.java:128) …省略119个公共帧

redis中的数据: --redis将configDao的密钥存储在configDao~keys中。 ZRANGE“configDao~keys”0-1 1) “配置” 获取配置 “[\”model.Configuration\“,{\”name\“:\”configA\“,\”value\“:\”804\“}]”

有人能告诉我如何使用redisTemplate读取redis中的@Cacheable数据吗


非常感谢。

您尝试过通过缓存管理器访问缓存吗?获取
RedisCacheManager
bean,获取适当的缓存,然后您就可以对数据进行操作。请记住,Spring data Redis如何序列化缓存数据以及如何维护缓存是一个实现细节,不需要使用fu就可以更改r另请注意。谢谢,@mp911de,我尝试使用redisCacheManager获取RedisCache,但与Ehcache不同,它没有获取所有键或迭代所有元素的方法。您是否尝试通过缓存管理器访问缓存?获取
redisCacheManager
bean,获取适当的缓存,然后您可以对数据进行操作。请继续请注意,Spring Data Redis如何序列化缓存数据以及如何维护缓存是一个实现细节,可以在不另行通知的情况下更改。感谢@mp911de,我尝试使用redisCacheManager获取RedisCache,但与Ehcache不同,它没有获取所有键或迭代所有元素的方法。