提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
一、Redis添加缓存
原先:

优化:

二、为店铺查询添加缓存


三、


java
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public Result queryTypeList() {
//1.在redis当中查询商铺类型列表缓存是否存在
String key = RedisConstants.CACHE_SHOP_TYPE_KEY;
List<String> shopTypeListJson = stringRedisTemplate.opsForList().range(key, 0, -1);
//2.存在直接返回
if(CollectionUtil.isNotEmpty(shopTypeListJson)){
//将所有的jsonList转化为对象list,并排序
List<ShopType> shopTypeList = shopTypeListJson.stream()
.map(str-> JSONUtil.toBean(str, ShopType.class))
.sorted(Comparator.comparingInt(ShopType::getSort))
.collect(Collectors.toList());
return Result.ok(shopTypeList);
}
//3. 不存在,查询数据库使用mp提供的接口
List<ShopType> shopTypeList = query().orderByAsc("sort").list();
//4.数据库中不存在, 返回错误
if (CollectionUtil.isEmpty(shopTypeList)){
return Result.fail("商铺类型列表为空!");
}
shopTypeListJson = shopTypeList.stream().sorted(Comparator.comparingInt(ShopType::getSort))
.map(shopType -> JSONUtil.toJsonStr(shopType))
.collect(Collectors.toList());
//5.保存到Redis当中
stringRedisTemplate.opsForList().rightPushAll(key, shopTypeListJson);
//6.返回信息
return Result.ok(shopTypeList);
}
}
总结
添加缓存能从系统性能、资源消耗、用户体验等多个维度带来显著优化,核心是通过 "将高频访问的数据暂存到快速存储介质",减少对底层慢设备(如数据库、硬盘)的直接依赖

