概述
前面我们已经实现了移动端菜品查看功能,对应的服务端方法为DishController的list方法,此方法会根据前端提交的查询条件进行数据库查询操作。在高并发的情况下,频繁查询数据库会导致系统性能下降,服务端响应时间增长。现在需要对此方法进行缓存优化,提高系统的性能。
具体的实现思路如下:
一、改造DishController的list方法,先从Redis中获取菜品数据,如果有则直接返回,无需查询数据库;如果没有则查询数据库,并将查询到的菜品数据放入Redis。
- 在DishController中注入RedisTemplate对象,用于操作Redis
@Autowired
private RedisTemplate redisTemplate;
- 改造DishController的list方法
List<DishDto> dishDtoList = null;
// 动态构造key
String key = "dish" + "_" + dish.getCategoryId() + "_" + dish.getStatus(); //dish_15625615641_1
// 从Redis获取缓存数据
dishDtoList = (List<DishDto>) redisTemplate.opsForValue().get(key);
// 如果存在,直接返回,无需查询数据库
if (dishDtoList!=null){
return R.success(dishDtoList);
}
// 如果不存在,需要查询数据库,将查询到的菜品数据缓存到Redis
redisTemplate.opsForValue().set(key,dishDtoList,60, TimeUnit.MINUTES);
return R.success(dishDtoList);
二、改造DishController的save和update方法,加入清理缓存的逻辑
改造DishController的save和update方法
// 清理所有菜品的缓存数据
// Set keys = redisTemplate.keys("dish_*");
// 清理某个分类下面的菜品
String key = "dish_" + DishDto.getCategoryId()+"_" + "_1";
redisTemplate.delete(key);
最后
以上就是优美水池为你收集整理的Day 9-1 项目优化 Redis加载缓存及清除缓存的全部内容,希望文章能够帮你解决Day 9-1 项目优化 Redis加载缓存及清除缓存所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复