优化前面已经创建好的项目:将一些问题进行优化处理。本节主要解决是下面的问题。
前面的的项目,是将短信验证码等数据缓存到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
删除套餐删除缓存数据的代码:
保存套餐删除缓存数据的代码: