商户查询缓存 :
逻辑实现 :
- 从缓存中查询商铺信息
- 判断是否有缓存
- 有缓存
- 直接返回商铺信息 , 转为list格式
- 没有缓存 , 根据id从数据库中查询数据
- 判断是否有这个商铺
- 没有
- 直接返回错误信息
- 有
- 将数据保存到Redis中 , 并返回数据
- 没有
- 判断是否有这个商铺
- 有缓存
- 判断是否有缓存
代码实现 :
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public List<ShopType> queryShopTypeList() {
// TODO 1.从缓存中查询商铺信息
String lockShop = stringRedisTemplate.opsForValue().get(LOCK_SHOP_KEY);
// TODO 2.判断不为空 , 就直接返回 , 转为list格式
if (StrUtil.isNotBlank(lockShop)) {
List<ShopType> list = JSONUtil.toList(lockShop, ShopType.class);
return list;
}
// 3.为空 , 从数据库中查询
List<ShopType> sort = query().orderByAsc("sort").list();
// 判断查询数据是否为空
if (ArrayUtil.isEmpty(sort)){
return null;
}
// TODO 4.将查询出来的数据添加到Redis缓存 , 转为字符串
stringRedisTemplate.opsForValue().set(LOCK_SHOP_KEY,JSONUtil.toJsonStr(sort),LOCK_SHOP_TTL, TimeUnit.DAYS);
// TODO 5.将数据返回
return sort;
}
}
.