我是靠谱客的博主 优美水池,最近开发中收集的这篇文章主要介绍Day 9-1 项目优化 Redis加载缓存及清除缓存,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

前面我们已经实现了移动端菜品查看功能,对应的服务端方法为DishController的list方法,此方法会根据前端提交的查询条件进行数据库查询操作。在高并发的情况下,频繁查询数据库会导致系统性能下降,服务端响应时间增长。现在需要对此方法进行缓存优化,提高系统的性能。
具体的实现思路如下:

一、改造DishController的list方法,先从Redis中获取菜品数据,如果有则直接返回,无需查询数据库;如果没有则查询数据库,并将查询到的菜品数据放入Redis。

  1. 在DishController中注入RedisTemplate对象,用于操作Redis
	@Autowired
    private RedisTemplate redisTemplate;
  1. 改造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加载缓存及清除缓存所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部