Redis模块二:缓存分类 + Redis模块三:常见缓存(应用)

news2024/10/5 14:15:57

缓存大致可以分为两大类:
1)本地缓存
2)分布式缓存

目录

本地缓存

分布式缓存

常见缓存的使用 

本地缓存:Spring Cache  

分布式缓存:Redis  


本地缓存

本地缓存也叫单机缓存,也就是说可以应⽤在单机环境下的缓存。所谓的单机环境是指,将服务部署到⼀台服务器上,如下图所示: 

举个例子:
本地缓存相当于每家企业的公司规定⼀样,不同的公司规定也是不同的,比如上班时间,不同的公司上班时间规定也是不同的,对于企事业单位来说⼀般要求 9:00-17:00 上班,而对于酒吧来说,这个时间就完全不适合了。  
所以,本地缓存的特征是只适⽤于当前系统。  

分布式缓存

分布式缓存是指可以应⽤在分布式系统中的缓存。所谓的分布式系统是指将⼀台服务器部署到多台服务器,并且通过负载分发将⽤户的请求按照⼀定的规则分发到不同服务器,如下图所示:  

举个例子:
分布式缓存相当于适⽤于所有公司的规定,⽐如无论是任何公司都不能偷税漏税,不能做违反法律的事情,这种情况就和分布式缓存很像,适⽤于所有的系统。⽐如我们在分布式系统中的服务器 A 中存储了⼀个缓存 key=themyth,那么在服务器 B 中也可以读取到 key=themyth 的数据,这样情况就是分布式缓存的作⽤。  

常见缓存的使用 

本地缓存的常见使⽤:Spring Cache、MyBatis 的缓存等。
分布式缓存的常见使⽤:Redis 和 Memcached。  

本地缓存:Spring Cache  

在 Spring Boot 项⽬,可以直接使⽤ Spring 的内置 Cache(本地缓存),只需要完成以下三个步骤就可以正常使⽤了:
1. 开启缓存
2. 操作缓存
3. 调⽤缓存 

在 Spring Boot 的启动类上添加如下代码,开启缓存:

① 开启缓存  

② 编写缓存操作代码

 在 Service 层增加三个缓存操作的方法:添加缓存、修改缓存、删除缓存,示例代码如下:

③ 编写触发(调⽤)代码  

以上步骤执行完之后,可以使用 Postman 模拟调⽤来查看缓存。   

分布式缓存:Redis  

在 Spring 框架中我们也可以直接操作 Redis 缓存,它的操作流程如下图所示:   

Redis 和 Memcached 的区别

1.存储方式不同:memcache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存⼤⼩;Redis 有部份存在硬盘上,这样能保证数据的持久性
2.数据⽀持类型:memcache 对数据类型⽀持相对简单;
Redis 有复杂的数据类型
3.存储值⼤⼩不同
Redis 最⼤可以达到 512mb,memcache 只有 1mb。

总结:通常情况下,如果是单机 Spring 项⽬,会直接使⽤ Spring Cache 作为本地缓存,如果是分布式环境⼀般会使⽤ Redis。  

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

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

相关文章

Spring Boot 动态加载jar文件

Spring Boot 动态加载jar文件 接口实现: package org.bc.device;public interface IDeviceHandler {String start();String stop(); }实现类: package org.bc.device; public class MqttDevice implements IDeviceHandler{ Override public String s…

深度学习:循环神经网络RNN及LSTM

深度学习:循环神经网络RNN及LSTM 循环神经网络RNN原理代码 长短期记忆网络LSTM原理遗忘门记忆门输出门 代码 循环神经网络RNN 原理 对于传统的神经网络,它的信号流从输入层到输出层依次流过,同一层级的神经元之间,信号是不会相互…

双目立体视觉

#理想模型图 其中: b 为基线,即两个相机原点之间的距离 ; fl和fr 分别为左右相机的焦距,理想的双目相机flfrf ; cl和cr 分别为左右相机的光心,理想的双目相机clcr ; xl和xr 分别为空间中的一点…

mac连不上5gwifi怎么解决 macbook无法连接5g wifi

MBP突然连不上5G Wifi,但是用Wifi却可以,用手机、平板使用5G WIFI一切正常,是什么问题呢?重启路由器、重启电脑、路由器刷机、路由器恢复出厂设置,一番折腾下来,费时又费力,终于MacOS可以搜索到…

【面试经典150 | 数组】删除有序数组中的重复项

文章目录 写在前面Tag题目来源题目解读解题思路方法一:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内…

一个Qt鼠标透传场景与事件过滤器的用法

一个Qt鼠标透传场景与事件过滤器的用法 最近工作中遇到一个开发场景,将一个QWidget控件(称为控件A)放入QScrollArea,该控件A重写了QWidget::wheelEvent,根据鼠标滚轮事件缩放内部的绘制视图。当控件过大时&#xff0c…

软件工程评级B-,有大量调剂名额。北京联合大学考情分析

北京联合大学(B-) 考研难度(☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1239字,预计阅读:3分钟 2023考情概况 北京…

FreeMarker详细介绍

FreeMarker详细介绍 FreeMarker FreeMarker概述 FreeMarker概念 FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库…

nodejs实现websocket服务端和客户端

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

MySQL长文本字段的选取

某个字段需要存储 长文本类型的数据,长度可变,范围不清. varchar最多能存储多大长度呢? 何种情况下用text更好? 以下内容就为探究这个问题: <1>.先将content字段设为varchar(255),则此字段只能最多存储255个字符数 package mainimport "fmt"func main() { va…

2023年会展行业研究报告

第一章 行业概况 1.1 定义 会展行业是一个多元化和复杂的领域&#xff0c;涵盖了许多不同的活动和功能。一般来说&#xff0c;会展业是指在一定的区域空间内&#xff0c;许多人聚集在一起形成的定期或者不定期&#xff0c;制度或者非制度&#xff0c;传递和交流信息的群众性的…

Visual Studio运行Python程序(超级详细)

Visual Studio Code&#xff0c;简称 VS Code&#xff0c;是由微软公司开发的 IDE 工具。与微软其他 IDE&#xff08;如 Visual Studio&#xff09;不同的是&#xff0c;Visual Studio Code 是跨平台的&#xff0c;可以安装在 Windows、Linux 和 macOS平台上运行。 不仅如此&am…

UMA 2 - 创建自己的UMA模型⭐一.配置Blender环境

文章目录 🟥 下载 simple_renaming_panel🟧 Blender安装插件🟨 启用插件并保持自动更新🟩 打开插件视图🟥 下载 simple_renaming_panel UMA需要指定的人物骨骼名称,因此我们用该Blender插件快捷重命名. 下载链接: https://github.com/Weisl/simple_renaming_panel �…

阅读类APP广告变现的商业化发展方向

免费阅读类 APP 对广告的依赖程度较高。因此&#xff0c;如何实现流量精细化运营以最大化流量价值&#xff0c;是流量主面临的关键课题和难点&#xff1b;与此同时&#xff0c;免费阅读 APP 的 PV 量极大&#xff0c;但 UV、DAU 量级相对较小&#xff0c;因此&#xff0c;如何开…

python 学习笔记(6)—— Flask 、MySql

目录 Flask 1、起步 2、渲染项目的首页 3、处理无参数的 GET 请求 4、处理有 query 参数的 GET 请求 6、处理 params 参数的 get 请求 6、处理 application/json 类型请求体的 POST 请求 7、根据参数渲染模板页面 8、上传文件 数据库操作&#xff08;mysql&#xff0…

Jenkins结合gitlab自动化持续集成

最近在公司有负责搭建自动化测试环境&#xff0c;自动化脚本写好后&#xff0c;毋庸置疑是需要将自动化脚本进行持续集成测试&#xff0c;能够根据企业的定制化需求&#xff0c;通过Jenkins触发执行构建任务&#xff0c;定时执行自动化脚本等&#xff0c;今天就给大家介绍一下J…

可视化大屏设计模板 | 主题皮肤(报表UI设计)

下载使用可视化大屏设计模板&#xff0c;减少重复性操作&#xff0c;提高报表制作效率的同时也确保了报表风格一致&#xff0c;凸显关键数据信息。 软件&#xff1a;奥威BI系统&#xff0c;又称奥威BI数据可视化工具 所属功能板块&#xff1a;主题皮肤上传下载&#xff08;数…

【实践篇】redis管道pipeline使用详解

文章目录 0. 前言什么场景下使用redis管道特性 1.原理1.1 redis管道特性的处理机制 使用redis管道优化示例3. springboot使用redis管道示例4. 参考资料5. 源码地址6. Redis从入门到精通系列文章 0. 前言 Redis管道&#xff08;Pipeline&#xff09;是一种批量执行Redis命令的机…

Revit SDK 介绍:TypeRegeneration 修改类型,更新文档 ValidateParameters 参数合法性验证

前言 这篇文章介绍两个例子&#xff0c;逻辑比较简单&#xff1a; TypeRegeneration 修改类型&#xff0c;更新文档ValidateParameters 参数合法性验证 内容 TypeRegeneration FamilyType 不是继承自 Element 的&#xff0c;而是独立于 Element 体系之外&#xff0c;直接从…

window.structuredClone()

先看下兼容性 1. 创建一个要克隆的对象。例如&#xff1a; const originalObj {name: John,age: 25,address: {city: New York,country: USA} };2. 调用structuredClone()方法克隆对象。例如&#xff1a; const clonedObj window.structuredClone(originalObj);3. clonedObj将…