目录
介绍
黑马点评P37集课后作业,给商铺类型业务添加缓存。
和上一条不同的是,商户缓存是String类型,商户类型的数据是List集合类型,需要做一些改动。
代码
ShopTypeController
@RestController
@RequestMapping("/shop-type")
public class ShopTypeController {
@Resource
private IShopTypeService typeService;
@GetMapping("list")
public Result queryTypeList() {
return typeService.queryAll();
}
}
IShopTypeService
public interface IShopTypeService extends IService<ShopType> {
/**
* 查询所有商铺类型
* @return 商铺类型列表
*/
Result queryAll();
}
ShopTypeServiceImpl
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 查询所有商铺类型
*
* @return 商铺类型列表
*/
@Override
public Result queryAll() {
//1、获取redis中的商铺类型缓存
String shopType = stringRedisTemplate.opsForValue().get(CACHE_SHOPTYPE_KEY);
//2、判断缓存是否存在
if (StrUtil.isNotBlank(shopType)){
//3、存在,直接返回
return Result.ok(JSONUtil.toList(shopType, ShopType.class));
}
//4、不存在,查询数据库
List<ShopType> shopTypes = query().orderByAsc("sort").list();
//5、不存在,返回错误
if (shopTypes == null){
return Result.fail("商铺类型不存在");
}
//6、存在,写入redis
stringRedisTemplate.opsForValue().set(CACHE_SHOPTYPE_KEY, JSONUtil.toJsonStr(shopTypes));
return Result.ok(shopTypes);
}
}
RedisConstants
public class RedisConstants {
public static final String CACHE_SHOPTYPE_KEY = "cache:shoptype:";
}
可以看到商品类型数据被正确的存储到Redis中