如何查看Spring Boot @Cacheable存入Redis中的值
解决Spring Boot @Cacheable存入Redis后redis-cli无法查询值的问题
问题原因
你看到的Redis实际键是dataList::SimpleKey [],但查询时没有传入完整的键名(忽略了末尾的空格和[]),导致Redis找不到对应的键,返回null或none。而Spring Cache内部会严格按照生成的完整键名匹配,所以API能正常获取缓存值。
正确的查询方式
在redis-cli中查询时,需要用引号包裹包含特殊字符(空格、方括号)的完整键名:
# 获取缓存值 GET "dataList::SimpleKey []" # 查看键的类型 TYPE "dataList::SimpleKey []"
优化建议
如果觉得默认生成的键名不直观,可通过@Cacheable的key属性自定义键规则,比如根据请求参数的唯一标识生成键:
@GetMapping("/") @ResponseBody @Cacheable(value = "dataList", key = "#someParameters.id") // 用参数id作为键的一部分 public SomeObject getDataList(SomeParameters someParameters){ ... }
这样生成的键会类似dataList::123(假设id是123),在redis-cli中查询会更方便。
内容的提问来源于stack exchange,提问作者William
相关产品推荐
相关产品推荐

