1. 首先是查询时看redis中有无数据
-》若有,那么直接返回ok
-》若无,那么继续到2
2.再查询数据库中有无信息
-》若有,那么将其存入redis中,再返回ok
-》若无,那么报错了呗,没数据。
public Result queryList() {
String key = "cache:shopType";
//1.先查询redis中有无数据
String shopType = stringRedisTemplate.opsForValue().get("cache:shopType");
//2.若有,那么将其list的集合返回
if(StrUtil.isNotBlank(shopType)){
//3.将其转换为json的集合返回
List<ShopType> list = JSONUtil.toList(shopType, ShopType.class);
return Result.ok(list);
}
//4.若无,那么从数据库中拿到数据
List<ShopType> typeList = query().orderByAsc("sort").list();
if(typeList==null){
//若数据库中也没有,那么直接返回失败
return Result.fail("数据库和redis中均没有");
}
//6.将其存到redis中
stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(typeList));
//7.返回成功
return Result.ok(typeList);
}