使用Redis中的String类型 进行类型缓存
1.缓存在Redis中的店铺类型key
public static final String CACHE_SHOP_TYPE_KEY = "cache:shop_type:";
2 .Controller层
/**
* 主页类型分类
* @return
*/
@GetMapping("list")
public Result queryTypeList() {
List<ShopType> typeList = typeService.TypeList();
/* List<ShopType> typeList = typeService
.query().orderByAsc("sort").list();*/
return Result.ok(typeList);
}
3.Service层
/**
* 主页类型查询
* @return
*/
List<ShopType> TypeList();
4.Serviceimpl层
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 主页类型查询
*
* @return
*/
@Override
public List<ShopType> TypeList() {
String key = RedisConstants.CACHE_SHOP_TYPE_KEY;
//1.从redis中查询类型
String shopTypeJson = stringRedisTemplate.opsForValue().get(key);
//2.判断redis中是否存在缓存信息
if (StrUtil.isNotBlank(shopTypeJson)) {
List<ShopType> shopTypes = JSONUtil.toList(shopTypeJson, ShopType.class);
//2.存在
return shopTypes;
}
//4.不存在 查询数据库
List<ShopType> typeList = query().orderByAsc("sort").list();
//5.存入redis中
stringRedisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(typeList));
//6.返回从数据库中查询到的类型信息
return typeList;
}