1、什么是缓存
2、实现查询缓存数据并返回
2.1 实现代码
String key = CACHE_SHOP_KEY + id;
// 从Redis 查询 商铺缓存
String shopJson = stringRedisTemplate.opsForValue().get(key);
// 判断是否存在
if(StrUtil.isNotBlank(shopJson)){
// 存在返回
Shop shop = JSONUtil.toBean(shopJson, Shop.class);
return Result.ok(shop);
}
// 不存在,根据id查询数据库
Shop shop = getById(id);
if (shop == null){
// 不存在,返回错误
return Result.fail("店铺不存在");
}
stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shop));
// 存在,写入reids 返回
return Result.ok(shop);
}
3、在给数据库做更新操作时,保证数据库与redis数据一致性
3.1 实现代码
@Transactional
public Result update(Shop shop) {
// 1、更新数据库
Long id = shop.getId();
if (id == null){
return Result.fail("店铺id不能为空");
}
update(shop);
// 2、删除缓存
stringRedisTemplate.delete(CACHE_SHOP_KEY+id);
return Result.ok();
}