对于店铺类型数据,一般变动会比较小,所以这里我们直接将店铺类型的数据持久化存储到Redis中
查询缓存通用步骤:(类比查找图书)
找前台的系统查(查Redis)
系统里有吗?(判断缓存命中) 有就直接抱走书(返回)。
系统没有?去地下书库找!(查MySQL数据库)
书库里有吗?(判断数据库命中) 没有就告诉用户“真没这本书”(返回错误)。
书库里找到了!赶紧复印一份放到前台(写入Redis),方便下个人直接拿。
把原件给用户(返回结果)。
使用
String类型的key-value结构缓存店铺类型数据
java
/**
* 查询店铺类型列表。
*
* 作用:
* 1.从Redis查询缓存;
* 2.判断是否存在;
* 3.存在;
* 4.不存在,从数据库查;
*
* @return处理结果
*/
@Override
public Result queryTypeList() {
String key= RedisConstants.SHOP_TYPE_KEY;
//1.从Redis查询缓存
String ShopTypeJson=stringRedisTemplate.opsForValue().get(key);
//2. 判断是否存在
if(StrUtil.isNotEmpty(ShopTypeJson)){
//3.存在
List<ShopType> shopTypes= JSONUtil.toList(ShopTypeJson,ShopType.class);
return Result.ok(shopTypes);
}
//4.不存在,从数据库查
List<ShopType> shopTypeList = this.query().orderByAsc("sort").list();
if(shopTypeList==null||shopTypeList.isEmpty()){
return Result.fail("店铺类型不存在");
}
stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shopTypeList));
return Result.ok(shopTypeList);
}