码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 外卖项目(项目优化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下的数据信息:

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

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

    1. //精准清理在Redis下的内容数据(清理某个分类下面的菜品缓存数据)
    2. String key = "dish" + dishDto.getCategoryId() + "_1";
    3. 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

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

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

  • 相关阅读:
    艾美捷内毒素纯化树脂说明书
    thymeleaf
    【Linux】使用ntpdate同步
    【MySQL】解决在join表时一对多的情况下重复数据的问题
    通过二级域名解决1台云服务器搭建多个公众号后端服务的问题
    运筹学基础【五】 之 线性规划
    【机器学习】进阶学习:详细解析Sklearn中的MinMaxScaler---原理、应用、源码与注意事项
    【C++】运算符重载案例 - 字符串类 ④ ( 重载 双等号 == 运算符 | 重载 不等号 != 运算符 | 代码示例 )
    JAVA毕设项目芮城县十全十美火锅店点餐系统(java+VUE+Mybatis+Maven+Mysql)
    Git全套,从简到细
  • 原文地址:https://blog.csdn.net/xiaoxixicc/article/details/128068949
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号