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

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

 

前面的的项目,是将短信验证码等数据缓存到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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值