什么是缓存?
 缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。
通过Redis来缓存数据,减少数据库查询操作;
 
 逻辑
 每个分类的菜品保存一份缓存数据
 数据库菜品数据有变更时清理缓存数据
如何将商品数据缓存起来。
   @GetMapping("/list")
    @ApiOperation("根据分类id查询菜品")
    public Result<List<DishVO>> list(Long categoryId) {
        //查询redis里面是否存在数据类;
    String key="dish_"+categoryId;
        //如果存在直接返回
        List<DishVO> list = (List<DishVO>) redisTemplate.opsForValue().get(key);
     if (list!=null&&list.size()>0){
         return Result.success(list);
     }
        //不存在需要查询数据库,并保存至redis里面
        Dish dish = new Dish();
        dish.setCategoryId(categoryId); //设置套餐的id
        dish.setStatus(StatusConstant.ENABLE);//查询起售中的菜品
         list = dishService.listWithFlavor(dish);
        redisTemplate.opsForValue().set(key,list); //将他缓存起来
        return Result.success(list);
    }
 

 控制台没有sql了,说明缓存已经实现了。
二 数据内容发生改变的时候,需要修改redis的内容。
修改操作、删除菜品、起售或者停售、新建菜品也需要缓存数据
private void  cleanCache(String pattern){
        Set keys = redisTemplate.keys(pattern);
        redisTemplate.delete(keys); //支持删除集合的
    }
 
删除对应的缓存数据
缓存套餐功能
 spring Cache 实现了基于注解的缓存功能
 
   <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
 
对应的maven坐标
注解开发
 
 Cacheable 在方法执行前查询缓存是否有数据;
 
 







![[C++ 网络协议] 套接字](https://img-blog.csdnimg.cn/d3bb90e97a35433fa86f1306f057cb87.png)









![[oeasy]python0083_[趣味拓展]字体样式_正常_加亮_变暗_控制序列](https://img-blog.csdnimg.cn/img_convert/91faeddc16aee1cfdc71fe7dafc341fc.png)

