后端开发中缓存的作用以及基于Spring框架演示实现缓存
缓存的作用及演示

现在我们使用的程序都是通过去数据库里拿数据然后展示的
长期对数据库进行数据访问
这样数据库的压力会越来越大
数据库扛不住了
创建了一个新的区域
程序访问去缓存 缓存区数据库
缓存里放数据
有效降低数据访问的压力

我们首先进行一个演示
为了演示缓存我手搓了一个案例
挑战5分钟内基于Springboot+SpringMVC+Mybatis-plus快速构建web后端三层架构-CSDN博客
计算机中主存→高速缓存→CPU,高速缓存容量小速度快,可存放一些数据在缓存中,cpu下次直接从缓存中读取
我们连续进行两次查询
会给数据库带来很大的压力
因为我们会读取很多次
所以我们要手搓缓存
我们选择在我们的业务层中去操作
创建一个哈希集合
把查询过的数据放入 每次都找一下

再次查询时就能在cache中去找了
我们也可以用redis去做 但是大材小用
用redis你的service层也需要这套逻辑
缓存可以有效降低磁盘io的次数

同理
手机验证码验证效果
业务层
控制层


Spring缓存

我们在Spring里引入了依赖

<!-- 缓存的起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
接着我们要在启动响应类里面打上注解
启动缓存
package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication
//开启缓存
@EnableCaching
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}}
我们进入业务层
设置方法使用缓存

通过一个注解就能设置缓存
@Override
@Cacheable(value="cacheSpace",key="#id")
public User getById(Integer id) {return userDao.selectById(id);
}

个人号推广
博客主页
多多!-CSDN博客
Web后端开发
https://blog.csdn.net/qq_30500575/category_12624592.html?spm=1001.2014.3001.5482
Web前端开发
https://blog.csdn.net/qq_30500575/category_12642989.html?spm=1001.2014.3001.5482
数据库开发
https://blog.csdn.net/qq_30500575/category_12651993.html?spm=1001.2014.3001.5482
项目实战
https://blog.csdn.net/qq_30500575/category_12699801.html?spm=1001.2014.3001.5482
算法与数据结构
https://blog.csdn.net/qq_30500575/category_12630954.html?spm=1001.2014.3001.5482
计算机基础
https://blog.csdn.net/qq_30500575/category_12701605.html?spm=1001.2014.3001.5482
回忆录
https://blog.csdn.net/qq_30500575/category_12620276.html?spm=1001.2014.3001.5482
相关文章:
后端开发中缓存的作用以及基于Spring框架演示实现缓存
缓存的作用及演示 现在我们使用的程序都是通过去数据库里拿数据然后展示的 长期对数据库进行数据访问 这样数据库的压力会越来越大 数据库扛不住了 创建了一个新的区域 程序访问去缓存 缓存区数据库 缓存里放数据 有效降低数据访问的压力 我们首先进行一个演示 为了演示…...
Redis原理篇——分布式锁
Redis原理篇——分布式锁 分布式锁是什么?分布式锁有哪些特性?分布式锁常用实现方式Redis 实现分布式锁一、简单的 Redis 锁二、带过期时间的 Redis 锁三、加上 Owner 的 Redis 锁四、Lua 脚本确保原子性 分布式锁是什么? 分布式锁是在分布式…...
css3多列布局
css3多列布局 colmns属性 columns属性是一个简写属性 column-count属性:定义列的数量或者允许的最大列数 auto 为默认值,用于表示列的数量由其他css属性决定number 必须是正整数,用于定义列数量 column-width属性:定义列的宽度 …...
Java开发的构建神器:Maven以及如何安装部署Maven
目录 一、Maven引言1.1 Maven的核心概念✍. POM (Project Object Model)✌. 依赖管理✍. 生命周期与构建阶段✌. 插件系统 1.2 Maven的工作流程✍. 读取POM文件:✌. 依赖解析:✍. 构建生命周期:✌. 插件执行:✍. 构建输出…...
echarts学习:使用dataset管理数据
前言 在我们公司的组件库中有许多echarts图表相关的组件,这些组件在使用时,只需将图表数据以特定的格式传入组件中,十分方便。因此当我得知echarts 可以使用dataset集中管理数据时,我就决定自己一定要搞懂它,于是在最…...
MyBatis逆向工程和MyBatisX插件的使用
文章目录 1.ORM思维2.逆向工程3.MyBatisX插件的使用 1.ORM思维 ORM(Object-Relational Mapping,对象-关系映射)是一种将数据库和面向对象编程语言中的对象之间进行转换的技术。它将对象和关系数据库的概念进行映射,最后我们就可以…...
探索C嘎嘎的奇妙世界:第十四关---STL(string的模拟实现)
1. string类的模拟实现 1.1 经典的string类问题 上一关已经对string类进行了简单的介绍,大家只要能够正常使用即可。在面试中,面试官总喜欢让学生自己来模拟实现string类,最主要是实现string类的构造、拷贝构造、赋值运算符重载以及析构函数…...
【JavaScript脚本宇宙】玩转图像处理:从基础到高级,这些库你不能错过!
让你的网页图像栩栩如生:六种必备图像处理库 前言 在数字图像处理中,我们经常需要对图片进行各种操作,如调整亮度、对比度、饱和度等,以达到所需的效果。为了简化这些操作并提供更丰富的功能,出现了许多专门用于图像…...
python+unity手势控制地球大小
效果图如下 具体操作如下 1 在unity窗口添加一个球体 2 给球体添加材质,材质图片使用地球图片 地球图片如下 unity材质设置截图如下 3 编写地球控制脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class test : MonoBehavio…...
CSS【实战】抽屉动画
效果预览 技术要点 实现思路 元素固定布局(fixed)在窗口最右侧外部js 定时器改变元素的 right 属性,控制元素移入,移出 过渡动画 transition transition: 过渡的属性 过渡的持续时间 过渡时间函数 延迟时间此处改变的是 right …...
【Linux Vim的保姆级教程】
🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…...
力扣668.乘法表中第k小的数
力扣668.乘法表中第k小的数 二分查找 是否有k个比mid小的数 class Solution {public:int findKthNumber(int m, int n, int k) {auto check [&](int mid) -> bool{int res0;int row 1,col n;while(row < m){if(row * col < mid){res col;if(res > k) re…...
css伪类和伪元素选择器
伪类选择器关注元素的状态和条件,而伪元素选择器则关注元素的视觉表现和扩展。两者都是CSS中强大的工具,能够帮助开发者实现复杂的样式布局和交互效果。 伪类选择器 伪类选择器在CSS中用于选择元素的特定状态或位置。以下是一些常见的伪类选择器及其使…...
第壹章第15节 C#和TS语言对比-泛型
C#提供了泛型的完整支持,不仅在编译时,运行时仍然保留泛型的类型信息,同时提供了更加丰富的泛型约束和更加全面的协变逆变支持。TS的泛型,在语法表现形式上,和C#差不多,但本质上两者是不一样的。TS的泛型&a…...
苹果电脑下载vite包错
苹果电脑下载vite包错/Users/lili/.npm/_cacache/index-v5/c5/50/b451703d03b3802b9ee6b7ff2b0bde4de7f26830eb52c904d6911c137cf8包错解决方式 解决方式:sudo chown -R 501:20 "/Users/wangxin/.npm"...
自动化测试git的使用
git是一款分布式的配置管理工具。本文主要讲git如何在自动化测试中安装,上传及拉取下载代码。 1 、git 介绍 每天早上到公司,从公司的git服务器上下载最新的代码,白天在最新的代码基础上,编写新的代码,下班时把“代码…...
MyBatis系列四: 动态SQL
动态SQL语句-更复杂的查询业务需求 官方文档基本介绍案例演示if标签应用实例where标签应用实例choose/when/otherwise应用实例foreach标签应用实例trim标签应用实例[使用较少]set标签应用实例[重点]课后练习 上一讲, 我们学习的是 MyBatis系列三: 原生的API与配置文件详解 现在…...
Jenkins构建 Maven项目(微服务)并自动发布
前面讲了docker 安装Jenkins和gitlab代码管理工具,接下来我们讲一下Jenkins怎么构建 Maven项目。 1. 首先Jenkins配置下面3中工具类 首先是在本地安装三个jenkins自动配置相关的工具 1.1 JDK 由于我们使用docker来启动jenkins,其自带有jdk,…...
简单易用的多功能图床Picsur
什么是 Picsur ? Picsur 是一款易于使用、可自行托管的图片分享服务,类似于 Imgur,并内置转换功能。支持多种格式的图片,包括 QOI、JPG、PNG、WEBP(支持动画)、TIFF、BMP、GIF(支持动画…...
数据库-查询语句习题
SELECT Sname 姓 名,year of birth: 出生年,YEAR(GETDATE())-Sage BIRTHYEAR,LOWER(SNAME) SNAME --起别名 没有特殊字符不需要引号,有特殊字符要加引号;别名(解释作用显示给用户看)用空格或as连接 FROM STUDENT; --消除重复行 DI…...
【独家首发】ElevenLabs马拉雅拉姆文支持状态实测报告(含ISO 639-2代码验证、音素对齐误差率<0.8%)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs马拉雅拉姆文支持的现状与战略意义 ElevenLabs 作为全球领先的语音合成平台,自2023年11月起正式将马拉雅拉姆语(Malayalam,ISO 639-1: ml)纳入…...
ModbusTool:工业自动化通信调试的技术实现与实践指南
ModbusTool:工业自动化通信调试的技术实现与实践指南 【免费下载链接】ModbusTool A modbus master and slave test tool with import and export functionality, supports TCP, UDP and RTU. 项目地址: https://gitcode.com/gh_mirrors/mo/ModbusTool 在工业…...
5大核心模块彻底解决Windows更新故障:Reset-Windows-Update-Tool专业修复指南
5大核心模块彻底解决Windows更新故障:Reset-Windows-Update-Tool专业修复指南 【免费下载链接】Reset-Windows-Update-Tool Troubleshooting Tool with Windows Updates (Developed in Dev-C). 项目地址: https://gitcode.com/gh_mirrors/re/Reset-Windows-Update…...
从深夜改格式到一键生成:我的LaTeX参考文献国标化之旅 [特殊字符]
从深夜改格式到一键生成:我的LaTeX参考文献国标化之旅 🎯 【免费下载链接】gbt7714-bibtex-style BibTeX styles for Chinese National Standard GB/T 7714 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style 你是否也曾为了论文…...
类与对象(三)
再谈构造函数构造函数体赋值在创建对象时,编译器会通过调用构造函数,给对象中的各个成员变量一个合适的初始值:调用该构造函数后,对象中的每个成员变量都有了一个初始值,但是构造函数中的语句只能将其称作为赋初值&…...
Unity 2021.3 + EDM4U:手把手搞定Google登录SDK的安卓依赖与打包避坑
Unity 2021.3 EDM4U:深度解析Google登录SDK的安卓依赖管理实战 在移动应用开发中,第三方登录功能几乎是标配,而Google登录作为全球用户覆盖率最高的方案之一,其集成过程却常常让Unity开发者头疼不已。特别是当项目升级到Unity 2…...
ADC选型新思路:从抗混叠架构革新到极致集成设计
1. 从“采样”到“混叠”:一个老问题的现代解法做信号链设计,ADC选型永远是绕不开的核心。这些年,从工业物联网的传感器节点到汽车雷达的信号处理板,我经手过不少项目,一个深刻的体会是:系统性能的瓶颈&…...
Noto Emoji终极指南:3种策略彻底解决跨平台表情符号显示难题
Noto Emoji终极指南:3种策略彻底解决跨平台表情符号显示难题 【免费下载链接】noto-emoji Noto Emoji fonts 项目地址: https://gitcode.com/gh_mirrors/no/noto-emoji Noto Emoji是Google开发的开源表情符号字体库,旨在为全球用户提供完整、一致…...
从零到商用:用ElevenLabs打造粤语播客AI主播——12小时实测对比Azure/Coqui/TTS开源方案,成本降63%,交付提速4.8倍
更多请点击: https://intelliparadigm.com 第一章:从零到商用:用ElevenLabs打造粤语播客AI主播——12小时实测对比Azure/Coqui/TTS开源方案,成本降63%,交付提速4.8倍 粤语语音合成的三大瓶颈 传统方案在粤语TTS上长期…...
离线语音技术如何重塑智能照明:从核心原理到产品实战
1. 从“在线”到“离线”:智能照明交互的范式转变作为一名在智能家居领域摸爬滚打了十来年的从业者,我亲眼见证了智能照明从最初的手机APP遥控,到后来的智能音箱联动,再到如今离线语音技术的兴起。每次技术迭代,都不仅…...


