@Override
public Map<String, List<Catalog2Vo>> getCatalogJson() {
// 1. 加入缓存逻辑, 缓存中存的数据是JSON字符串
// JSON跨语言,跨平台兼容
String catalogJSON = stringRedisTemplate.opsForValue().get("catalogJSON");
if (StringUtils.isEmpty(catalogJSON)) {
// 2. 缓存中没有, 查询数据库
Map<String, List<Catalog2Vo>> catalogJsonFromDB = getCatalogJsonFromDB();
// 3. 查到的数据再放入缓存, 将对象转为JSON放入缓存
String s = JSON.toJSONString(catalogJsonFromDB);
stringRedisTemplate.opsForValue().set("catalogJSON", s);
return catalogJsonFromDB;
}
// 匿名内部类, TypeReference的构造器是protected修饰的,不能被包外的类实例化,所以需要写一个实现类
Map<String, List<Catalog2Vo>> result =
JSON.parseObject(catalogJSON, new TypeReference<Map<String, List<Catalog2Vo>>>() {
});
return result;
}
匿名内部类实现TypeReference
最新推荐文章于 2024-06-26 11:24:40 发布
该博客主要介绍了Java中使用Redis进行缓存操作的逻辑,包括首先检查缓存中是否存在数据,如果不存在则从数据库查询并转化为JSON存储,之后详细阐述了如何从JSON字符串反序列化回对象并返回。此外,还提到了TypeReference的使用,以正确解析Map<String, List<Catalog2Vo>>的类型。
393

被折叠的 条评论
为什么被折叠?



