8.10 用redis实现缓存功能和Spring Cache

什么是缓存?

缓存(Cache), 就是数据交换的缓冲区,俗称的缓存就是缓冲区内的数据,一般从数据库中获取,存储于本地代码。

通过Redis来缓存数据,减少数据库查询操作;

逻辑
每个分类的菜品保存一份缓存数据
数据库菜品数据有变更时清理缓存数据

如何将商品数据缓存起来。

bash 复制代码
   @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的内容。

修改操作、删除菜品、起售或者停售、新建菜品也需要缓存数据

bash 复制代码
private void  cleanCache(String pattern){

        Set keys = redisTemplate.keys(pattern);
        redisTemplate.delete(keys); //支持删除集合的

    }

删除对应的缓存数据

缓存套餐功能

spring Cache 实现了基于注解的缓存功能

bash 复制代码
   <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 在方法执行前查询缓存是否有数据;

相关推荐
wdfk_prog5 小时前
ROS教程07:从 ros::start() 顺着源码读懂 Master、XML-RPC 与 Topic 注册发现
运维·缓存·docker·容器·ros
Escalating_xu6 小时前
【内存管理发展史】从 8086 实模式到分页:CPU 如何把虚拟地址变成物理地址
linux·缓存
wdfk_prog6 小时前
用 Git Submodule + Sparse Checkout 管理 RT-Thread:内核、BSP、第三方库与业务代码分层实践
运维·缓存·docker·容器·ros
努力努力再努力wz7 小时前
【Docker入门系列】镜像为什么能复用?一文吃透 Docker Image、Registry、运行时架构与常用命令
缓存·docker·容器
wno7047 小时前
Spring Security添加图形验证码
java·后端·spring
Nano叶落8 小时前
几十万个-key-扫不过来?-bigkeys、SCAN、RDB-离线分析三步定位最该清的-Big-Key
redis
shark-chili9 小时前
关于AI辅助编程的认知
数据库·人工智能·redis·macos·缓存
步行cgn10 小时前
Spring Bean 的生命周期详解
java·后端·spring
heimeiyingwang10 小时前
【中台·技术篇】缓存中台建设:Redis 集群统一管理与多级缓存架构
redis·中台
oioihoii10 小时前
在 Kubernetes 上管好数据库:金仓 KES-Operator 正式落地
缓存