外卖项目(项目优化1)10---缓存优化

news2024/11/24 23:00:54

优化前面已经创建好的项目:将一些问题进行优化处理。本节主要解决是下面的问题。

 

前面的的项目,是将短信验证码等数据缓存到session中,该部分进行优化后,是将数据内容缓存到Redis中。

目录

一、使用git管理代码(对IDEA2021.3.3版本上传到gitee中)157

二、环境搭建 158

2.1maven坐标 158

2.2配置文件的设置 

三、缓存短信验证码 159

3.1实现思路 159

3.2代码实现

四、缓存菜品数据 160

4.1实现思路 160 

4.2代码改造缓存菜品数据&功能测试 161

4.3清理缓存数据思路分析&代码改造并测试 162

五、Spring Cache(数据缓存的简化技术) 164

5.1Spring Cache介绍 

5.2Spring Cache常用注解

5.3Spring Cache的使用方法 @CachePut注解 165

5.4Spring Cache的使用方法 @Evict注解 166

5.4Spring Cache的使用方法 @Cacheable注解 167

5.5使用Redis作为缓存产品 168

六、缓存套餐数据 169

6.1实现思路

6.2代码改造 


一、使用git管理代码(对IDEA2021.3.3版本上传到gitee中)157

idea中使用Git将本地项目提交到gitee仓库中 IntelliJ IDEA 2021.3.3 (Ultimate Edition)_null_17的博客-CSDN博客_ideal 2021.3上传项目到giteeidea提交本地项目到gitee仓库中 IntelliJ IDEA 2021.3.3 (Ultimate Edition)https://blog.csdn.net/qq_40622375/article/details/125371776?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166955438016782425180864%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=166955438016782425180864&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-125371776-null-null.142%5Ev66%5Econtrol,201%5Ev3%5Econtrol_2,213%5Ev2%5Et3_esquery_v1&utm_term=IDEA2021.3.3%E5%A6%82%E4%BD%95%E4%B8%8A%E4%BC%A0gitee&spm=1018.2226.3001.4187

二、环境搭建 158

2.1maven坐标 158

2.2配置文件的设置 

三、缓存短信验证码 159

3.1实现思路 159

3.2代码实现

优化UserController层的代码:

对应实现的代码:

1、导入Redis对应的对象:

2、使用Redis随机生成验证码,并使其有效期5分钟有效

3、 登陆成功后,将生成的验证码自动销毁

可以通过 Another Redis DeskTop Manager软件进行可视化Redis的数据信息。

四、缓存菜品数据 160

4.1实现思路 160 

 

注:采用分类的缓存方式来对菜品进行缓存处理。例如:点击湘菜之后,缓存湘菜类别下的菜品数据即可。点击别的类别的菜,就缓存对应的菜品即可。

4.2代码改造缓存菜品数据&功能测试 161

在DishController层进行处理

思路的实现:

1、导入对象

2、修改菜品中list方法

2-1、先从redis中获取缓存数据

2-2、如果redis存在这个数据,直接返回对应的数据信息,不需要查询Mysql数据库

2-3、如果redis不存在这个数据,需要先在Mysql数据库中进行查询数据,将数据返回后,数据也将回保存到redis中。执行原来的Mysql数据查询的程序代码

2-4、下面还是属于redis中不存在该数据的清空,需要将这个不存在的数据的信息保存到Redis中

4.3清理缓存数据思路分析&代码改造并测试 162

问题描述:主要优化的是,在菜品信息进行修改和再次保存时,原来的数据信息应当进行更替。得到最新的数据信息。

直接清理所有的保存在Redis下的数据信息:

Set keys = redisTemplate.keys("dish_*");//dish_*是保存到Redis中所有的菜品的名称共有部分
redisTemplate.delete(keys);//对Redis中的菜品信息进行删除

当点击修改命令或者保存命令时,清理某一个分类下的数据信息:

        //精准清理在Redis下的内容数据(清理某个分类下面的菜品缓存数据)
        String key = "dish" + dishDto.getCategoryId() + "_1";
        redisTemplate.delete(key);

五、Spring Cache(数据缓存的简化技术) 164

本部分是一个新的技术方法:使用该方法在使用内部的注解信息,就可以进行数据的缓存。

5.1Spring Cache介绍 

 注:这个是提供了一层抽象。

5.2Spring Cache常用注解

5.3Spring Cache的使用方法 @CachePut注解 165

现在只是使用最基本的数据缓存,不使用Redis的话,现在的配置就可以实现了。 

如果使用Redis作为数据缓存的话,需要在pom文件中添加以下的依赖

 

Spring Cache:

1、之间的区分是依靠key来进行区别的。一个value,可以代表多个key

2、本部分只是基本的缓存,随着本次的服务的停止,缓存的数据也就会随之消失

本部分代码的实现:

 对于key的解释:SPEL格式,这中key的形式。动态的获取。

5.4Spring Cache的使用方法 @Evict注解 166

清理缓存数据。

 

 

5.4Spring Cache的使用方法 @Cacheable注解 167

5.5使用Redis作为缓存产品 168

 注:

1、time-to-live的单位是ms 

2、其中原来的Spring Cache基础上的condition,能够使用result。但是在Redis中,condition不能够使用result,只能用unless来代替condition。提交由原来的  !=  修改为 ==。unless和condition是一对相反的内容。

六、缓存套餐数据 169

6.1实现思路

6.2代码改造 

 

 

 

 创建缓存的分类名称:value

 

 删除套餐删除缓存数据的代码:

  保存套餐删除缓存数据的代码:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Guava环境设置

Guava本地环境设置 这部分指导如何下载和设置Java在机器上。请按照以下步骤来设置环境。 Java SE免费提供链接:下载Java。所以,根据操作系统下载对应版本。 按照说明下载java和运行.exe 在机器上,并按说明安装Java。一旦机器上安装了Java&…

Leetcode原题电话号码的字母组合的两种解法【BFS-DFS】

来源:LeetCode 第17题【公众号:数据结构和算法】 给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。给出数字到字母的映射如下(与电话按键相同)。注意1不对应任何字母。 示例1&am…

浅析分布式数据库

前言 随着信息技术的迅猛发展,各行各业产生的数据量呈爆炸式增长,传统集中式数据库的局限性在面对大规模数据处理中逐渐显露,从而分布式数据库应运而生。分布式数据库是在集中式数据库的基础上发展起来的,是分布式系统与传统数据…

java刷题day 06

一. 单选题: 解析:最终类也叫密封类,是被final修饰的类,不能被继承 解析: A:6入,5 入,5出,4入,4出,3入,3出,6出&#xff0…

SpringBoot 封装 HBase 操作工具类

最近项目中用到了Hbase相关的操作并封装成工具类&#xff0c;我的Hbase服务器端版本是2.1.0&#xff0c;图示如下&#xff1a; 特此记录便于日后查阅。 一、pom.xml 依赖 <dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-shaded-…

【C++】快速入门list的使用

文章目录一、引入二、构造三、迭代器四、增删查五、其他操作一、引入 list的本质是带头双向循环链表&#xff0c;对于带头双向循环链表我们可是比较熟悉的了。本文只对list的一些常用接口进行说明&#xff0c;对于其他一些接口可自行查看文档。 二、构造 void Test() {list<…

Simple Black-box Adversarial Attacks

Abstract 我们提出了一种有趣的简单方法&#xff0c;用于在黑盒环境中构建对抗性图像。 与白盒场景相比&#xff0c;构建黑盒对抗图像对查询预算有额外的限制&#xff0c;而有效的攻击至今仍是一个悬而未决的问题。 仅在连续值置信分数的温和假设下&#xff0c;我们的高效查询…

2022 计网复习简答题【太原理工大学】

考虑到在此期间&#xff0c;我可能也会发表一些与考试不相关的博文&#xff0c;为了避免大家错过考试相关内容&#xff0c;我特意弄了一个专栏《期末复习汇总》&#xff0c;大家以后可以直接到专栏里面去寻找期末复习资料。这里是计算机网络考试简答题总结&#xff0c;其余题型…

资本+商业模式+中国制造的出海跨境电商,走向世界!(Starday)

近年&#xff0c;伴随着新冠疫情的爆发&#xff0c;海外的社交隔离以及中国面对境外入关者的严格隔离政策都给中国投资者的出海投资踩下了刹车&#xff0c;出国考察及尽调都分外的艰难。但也因为这样的国际局势&#xff0c;跨境电商服务行业在海外疫情的催化下&#xff0c;中国…

PyTorch学习笔记-Non-linear Activations与Linear Layers

1. Non-linear Activations 非线性激活函数官方文档&#xff1a;Non-linear Activations。 有深度学习基础的同学应该知道最常用的非线性激活函数就是 ReLU 和 Sigmoid 函数&#xff0c;多分类问题会在输出层使用 Softmax 函数。这三个函数在 PyTorch 中分别为 nn.ReLU、nn.S…

推特自动发帖,快速提升人气

Twitter一直是所有类型企业和品牌的极其宝贵的营销工具。如果使用得当&#xff0c;它本身就能成为一种高效的营销工具。Twitter与其他社交媒体渠道&#xff0c;在营销策略以及工作方式方面略有不同&#xff0c;在品牌营销方面与利用Twitter做推广&#xff0c;就意味着随着您的动…

NNDL 作业10:第六章课后题(LSTM | GRU)

文章目录习题6-3 当使用公式(6.50)作为循环神经网络得状态更新公式时&#xff0c;分析其可能存在梯度爆炸的原因并给出解决办法.习题6-4 推导LSTM网络中参数的梯度&#xff0c;并分析其避免梯度消失的效果习题6-5 推导GRU网络中参数的梯度&#xff0c;并分析其避免梯度消失的效…

[附源码]Python计算机毕业设计Django餐馆点餐管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Apple ID 登录

Apple登录可以看做第三方登录的一种&#xff0c;即使用Apple ID登录&#xff0c;前提是你已经有了苹果开发者账号&#xff0c;直接进入主题吧。 添加App IDs 填写Bundle ID 勾选“Sign In with Apple” 创建Key 苹果将使用公钥/私钥对作为OAuth客户端机密&#xff0c;其中客…

【mongodb】重新整理mongodb中的各种操作

目录前言初始化封装基础方法增&#xff1a;向集合内添加一个文档增&#xff1a;向集合内一次添加多条文档删&#xff1a;删除一条文档删&#xff1a;删除多条文档删&#xff1a;清空某个集合的所有文档查&#xff1a;查询符合条件的文档查询某个集合内所有文档&#xff1a;定位…

python>>numpy(第二讲)

章节内容 元素操作 常用的方法 广播 数组形状操作 排序数组 目录 元素操作 一些常用的方法 广播 数组形状操作 数组排序 元素操作 生成元素a np.array([1,2,3,4]) b np.ones(4)1 生成一个原来数组的n倍生成一个所有元素均跟2次方有关的数组一个计算矩阵相乘的函数判断两个…

<Android开发> HAL层集成第三方so库

当我们需要在自己的代码中使用第三方提供的一些接口函数时&#xff0c;我们该如何加入&#xff1f;作者在写这比安文章前遇到了一个问题&#xff1a;需要在自己的HAL层中引用第三饭提供的算法库即so库&#xff1b;这个问题是作者第一次遇到&#xff0c;以往都是自己写一些代码编…

原宇宙之地产探索

前言 随着“元宇宙”的概念风靡全球&#xff0c;一股“炒房”之风也开始在元宇宙世界兴起&#xff0c;就连大家熟知的歌手林俊杰、Snoop Dogg也纷纷入局元宇宙。昂贵的元宇宙房价有些甚至高于北京的一套别墅价格。 元宇宙中的“炒房” 去年下半年&#xff0c;元宇宙房地产玩家竞…

Android Compose Bloom 项目实战 (二) : 欢迎页

1. 前言 上一篇文章我们讲到了Compose Bloom项目开发之前的一些配置及沉浸式状态栏的修改。 这篇文章接着上文&#xff0c;会介绍欢迎页的开发。 需要实现的页面效果如下所示 2. 分析页面组件 根据UI图&#xff0c;我们可以可知&#xff0c;该页面是由背景和前面部分部分组…

IDEA配置tomcat,快速部署tomcat

Tomcat简介 Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持&#xff0c;最新的Servlet 和JSP 规范总是能在Tomcat 中得…