学习笔记-缓存&添加购物车

缓存定义

缓存是指在更高速的存储介质中,临时保存常用或近期访问数据的技术与机制

其目的是减少重复计算或重复访问慢速数据源,从而提升系统响应速度和整体性能

用redis来缓存菜品数据实现思路

通过Redis来缓存菜品数据,来减少数据库的查询操作(通过redis来完成对于内存其中数据来进行实际的查询操作)

其中redis是基于内存来进行缓存数据内容的,因此对应的就是基于内存对于数据来进行操作

  1. 首先用户端小程序来查询菜品数据
  2. 请求到对应的后端服务
  3. 由于缓存来解决访问数据,因此此处并不需要去查询对应的数据其中,我们可以直接来查询对应的缓存其中是否存在对应的数据
    1. 缓存其中有对应的菜品数据,则不需要去查询数据库其中内容
    2. 没有,则再去查询对应的数据库其中的数据

缓存菜品-代码开发-缓存菜品和数据

改造我们当前的查询数据的代码,将当前对应的查询到的商品数据将其来进行缓存起来

-->通过对应的RedisTemplate来操作Redis进行缓存操作

如何在Spring boot项目其中来使用对应的RedisTemplate对象?

具体实现

通过注入的redis来操作进行查询redis其中是否存在菜品数据

Redis 就是一个存在内存里的小型数据库 ,非常快,数据以 键值对(key-value) 形式保存,

DishController

动态的构造对应的我们需要的key,来查询或者后续放入redis其中数据库

首先对应的构造redis其中的key,通过key去对应的redis其中来相应的进行获取值

对应通过通过查询,数据已经存在,则直接进行返回

判断从redis数据库其中查询到的数据是否存在

à数据存在,对应的直接展示,无需再次来查询redis其中的数据

à数据若不存在的话,则查询数据库,将查询到的数据放入对应的redis其中即可

清理缓存

注意:

当我们来使用对应的redis缓存数据时,我们一定需要来保证数据的一致性

(也就是当对应的数据库其中的数据变更时,对应的缓存其中的数据我们也需要来进行实际的变更操作)

数据一致性:

指的是如果对应的数据库其中的数据发生变更时,对应的redis其中的数据也需要来进行实际的变更操作

总结:增删改,起售/停售菜品都需要来进行对应的清理缓存操作

新增菜品对应修改

@PostMapping("/save"):表示这是一个 POST 请求,访问的 URL 路径是 /save

@RequestBody DishDTO dishDTO:接收客户端请求体中的数据,并将其自动绑定到 DishDTO 对象

保存菜品数据,并且来清理缓存

String key = "dish_" + dishDTO.getCategoryId();

redisTemplate.delete(key);

这里根据菜品的分类 ID 构建一个 Redis 缓存的 keydishDTO.getCategoryId() 获取菜品的分类 ID

使用 redisTemplate.delete(key) 删除缓存中与该 key 相关的数据。

菜品批量删除-缓存数据清理操作

@DeleteMapping("/delete"):对应删除操作 访问路径为 /delete

dishService.deleteBatch(ids):批量来删除菜品内容

来进行通过 redisTemplate.keys("dish*") 获取所有符合 "dish*" 模式的 Redis 缓存的 key

并且使用使用 redisTemplate.delete(keys) 删除上述获取到的所有 keys 对应的缓存数据。

起售、停售操作缓存数据清理

@PostMapping("/status/{status}"):处理 HTTP POST 请求的接口,路径是 /status/{status}

调用服务方法进行状态修改

删除相关的 Redis 缓存数据

redisTemplate.keys("dish_*"):这个方法会返回所有符合 "dish_*" 模式的 Redis 缓存的 key,来进行删除匹配的缓存数据

相关推荐
RainCity2 天前
Java Swing 自定义组件库分享(十二)
java·笔记·后端
小七-七牛开发者7 天前
TokenPilot:让 LLM Agent 长会话成本降 60%+ 的上下文管理
缓存·agent·token·context·上下文·推理成本
LinXunFeng10 天前
Obsidian - 使用 Share Note 分享笔记并自部署
前端·笔记·github
通信小呆呆14 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick14 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee14 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
Alsn8614 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e14 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨14 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
闪闪发亮的小星星14 天前
高斯光以及高斯光公式解释
笔记