当前位置: 首页 > news >正文

springboot 整合redis问题,缓存击穿,穿透,雪崩,分布式锁

boot整合redis 压力测试出现失败
在这里插入图片描述在这里插入图片描述
解决方案 排除lettuce 使用jedis
在这里插入图片描述

 <!-- 引入redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency>

最终使用的都是redisTemplate
在这里插入图片描述

缓存穿透

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

分布式锁

分布式锁演示过程

在这里插入图片描述在这里插入图片描述
进阶2 设置过期时间和不存在则枷锁

占锁

锁的值应该是一个唯一标识,不然分布式应用,相同的value 会引起此服务将另外的服务的锁给释放掉了
在这里插入图片描述

释放锁

删除也必须是原子性的,否则有可能redis在传输过程中已过期,结果没结果删
在这里插入图片描述在这里插入图片描述
完整(保证一定会释放锁)
在这里插入图片描述

完整操作

使用redisson
引入依赖

<!-- 以后使用Redisson作为所有分布式锁 --><dependency><groupId>org.redisson</groupId><artifactId>redisson</artifactId><version>3.12.0</version></dependency>

创建配置类

@Configuration
public class MyRedissonConfig {/*** 所有对Redisson的使用都是通过RedissonClient* @return* @throws IOException*/@Bean(destroyMethod="shutdown")public RedissonClient redisson() throws IOException {//1、创建配置Config config = new Config();config.useSingleServer().setAddress("redis://192.168.1.100:6379");//2、根据Config创建出RedissonClient实例//Redis url should start with redis:// or rediss://RedissonClient redissonClient = Redisson.create(config);return redissonClient;}}

使用

在这里插入图片描述在这里插入图片描述在这里插入图片描述

方式2

给锁设置过期时间
在这里插入图片描述在这里插入图片描述
最佳实战
我们设置所得过期时间,时间设置的大一些,然后手动枷锁,手动解锁

读写锁
在这里插入图片描述
此问题是,读写调用的时候,读锁只有写锁完成并释放,才可以获取到锁
在这里插入图片描述在这里插入图片描述

闭锁

在这里插入图片描述
三个班的人都走了,才可以关门

信号量

在这里插入图片描述
尝试获取一下,不行就算了,不至于一直等待
在这里插入图片描述

终极使用

在这里插入图片描述在这里插入图片描述

缓存一致性

在这里插入图片描述

相关文章:

springboot 整合redis问题,缓存击穿,穿透,雪崩,分布式锁

boot整合redis 压力测试出现失败 解决方案 排除lettuce 使用jedis <!-- 引入redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclus…...

免费个人站 独立站 wordpress 自建网站

制作免费网站 | 免费网站构建器 | WordPress.com https://bioinformatics7.wordpress.com WordPress.com...

散列函数的基本概念

散列函数 算法不能设计太过复杂 太复杂的散列函数&#xff0c;势必会消耗很多计算时间 散列函数生成的值要尽可能随机并且均匀分布 这样才能避免或者最小化散列冲突而且即便出现来冲突&#xff0c;散列到每个槽里的数据也会比较平均&#xff0c;不会出现某个槽内数据特别多…...

【C++拷贝构造函数深浅拷贝】

拷贝构造函数 注意&#xff1a;访问权限是public 拷贝构造函数&#xff1a;类名&#xff08;const 类名& 对象名&#xff09;{} 可以有多个参数 。 没有常引用就是普通构造函数 如果不写&#xff0c;编译器自己会给一个&#xff08;作用仅仅是赋值&#xff0c;默认拷…...

快速编译安装tensorrt_yolo

快速编译安装 安装 tensorrt_yolo 通过 PyPI 安装 tensorrt_yolo 模块&#xff0c;您只需执行以下命令即可&#xff1a; pip install -U tensorrt_yolo 如果您希望获取最新的开发版本或者为项目做出贡献&#xff0c;可以按照以下步骤从 GitHub 克隆代码库并安装&#xff1a; …...

外盘黄金期货需要注意什么?

为大家整理了关于黄金做单的五大原则&#xff0c;相信对于新手投资者来说肯定会产生一定的帮助。  1、看多空&#xff1a;主要有两种方法&#xff0c;基本面判断和技术面判断&#xff0c;基本面判断&#xff0c;主要是借助基本信息面&#xff0c;如政策。供需&#xff0c;产量…...

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…...

mysql的索引可以分为哪些类型

MySQL的索引是用于提高查询性能的重要数据结构。不同类型的索引在不同的使用场景中具有不同的优势和适用性。 1. 主键索引&#xff08;Primary Key Index&#xff09; 特点&#xff1a;唯一且不允许 NULL 值。用途&#xff1a;唯一标识表中的每一行。自动创建&#xff1a;定义…...

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景 这里有一个需求&#xff0c;前端页面需要往后端传参&#xff0c;参数包括主表数据字段以及子表数据字段&#xff0c;由于主表与子表为一对多关系&#xff0c;在…...

【JavaEE进阶】——利用框架完成功能全面的图书管理系统

目录 &#x1f6a9;项目所需要的技术栈 &#x1f6a9;项目准备工作 &#x1f388;环境准备 &#x1f388;数据库准备 &#x1f6a9;前后端交互分析 &#x1f388;登录 &#x1f4dd;前后端交互 &#x1f4dd;实现服务器代码 &#x1f4dd;测试前后端代码是否正确 &am…...

WDF驱动开发-内存缓冲区

驱动程序通常使用内存缓冲区向/从框架和其他驱动程序传递数据&#xff0c;或在本地存储信息。 WDF常见的内存缓冲区包括框架内存对象(WDFMEMORY)、 lookaside、 MDL 和 本地缓冲区。 使用框架内存对象 框架使用 内存对象 来描述驱动程序从中接收并传递给框架的内存缓冲区。 每…...

c语言连接两个字符串

在C语言中&#xff0c;连接两个字符串可以使用 strcat 函数。这个函数将一个字符串复制到另一个字符串的末尾。使用 strcat 函数之前&#xff0c;需要确保目标字符串有足够的空间来容纳源字符串&#xff0c;否则可能会导致缓冲区溢出。 下面是一个使用 strcat 函数连接两个字符…...

基于springboot的大学计算机基础网络教学系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于springboot的大学计算机基础网络教学…...

UOS常用命令

shutdown 关机 reboot 重启 reboot -f 强制重启 history 查看使用的历史命令 history -c 清空命令行常见目录结构 /bin 存储常用用户指令 /boot 存放用于系统引导时使用的各种文件 /dev 存放设备文件 /etc 存放系统&#xff0c;服务的配置…...

vue3 如何给表单添加表单效验+正则表达式

校验要求 我们的表单中有密码、电话号码 &#xff0c;两项。 我们设置用密码为3到20位的非空字符 电话号码就用目前用的电话号码正则表达式&#xff0c;要求手机号码以 1 开头&#xff0c;第二位为 3 到 9 之间的数字&#xff0c;后面跟着任意 9 个数字&#xff0c;总共是 11…...

JavaScript算法实现dfs查找省市区路径

需求 存在如下数组&#xff0c;实现一个算法通过输入区名&#xff0c;返回省->市->区格式的路径&#xff0c;例如输入西湖区&#xff0c;返回浙江省->杭州市->西湖区。 // 定义省市区的嵌套数组 const data [{name: "浙江省",children: [{name: "…...

map文件分析

以下是一个具体的map文件示例&#xff0c;并附上详细的描述&#xff0c;帮助你更好地理解如何读取和分析map文件&#xff1a; 示例map文件 Memory ConfigurationName Origin Length Attributes FLASH 0x08000000 0x0…...

MySQL-创建表~数据类型

070-创建表 create table t_user(no int,name varchar(20),gender char(1) default 男);071-插入数据 语法格式&#xff1a; insert into 表名(字段名1, 字段名2, 字段名3,......) values (值1,值2,值3,......);insert into t_user(no, name, gender) values(1, Cupid, 男);字…...

【鸿蒙 HarmonyOS】Swiper组件

一、背景 项目中通常会遇到图片轮播&#xff0c;内容轮播的场景&#xff1b;如&#xff1a;在一些应用首页显示推荐的内容时&#xff0c;需要用到轮播显示的能力。 二、源码地址 ✍Gitee开源项目地址&#x1f449;&#xff1a;https://gitee.com/cheinlu/harmony-os-next-swi…...

玩具机器人脚本适合场景

玩具机器人脚本作为一个模拟的玩具机器人脚本&#xff0c;适合以下场合&#xff1a; 1.教育和学习&#xff1a;对于初学者和编程爱好者来说&#xff0c;这个脚本是一个很好的学习工具&#xff0c;可以帮助他们理解如何编写和执行简单的控制逻辑。 2.在计算机科学、机器人技术或…...

Mac Mouse Fix终极指南:如何让普通鼠标在Mac上获得超越触控板的体验

Mac Mouse Fix终极指南&#xff1a;如何让普通鼠标在Mac上获得超越触控板的体验 【免费下载链接】mac-mouse-fix Mac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad! 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix 还在为Mac上第三…...

解锁PS4游戏存档的终极掌控:Apollo Save Tool深度技术解析

解锁PS4游戏存档的终极掌控&#xff1a;Apollo Save Tool深度技术解析 【免费下载链接】apollo-ps4 Apollo Save Tool (PS4) 项目地址: https://gitcode.com/gh_mirrors/ap/apollo-ps4 在PlayStation 4的游戏生态中&#xff0c;PS4存档管理和游戏数据修改一直是玩家和开…...

大厂光环褪去后,技术人该如何评估一份工作的价值?

当“进入大厂”不再是职业发展的唯一解&#xff0c;当“稳定”成为一种奢求&#xff0c;软件测试从业者需要一套更内核的价值评估体系。这套体系不应依赖于公司的名头或短期的薪资涨幅&#xff0c;而应聚焦于那些能够被你带走、并持续产生复利的核心资产。我们可以从以下四个维…...

3个维度重新定义Cursor使用体验:如何突破免费试用限制

3个维度重新定义Cursor使用体验&#xff1a;如何突破免费试用限制 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your tri…...

装修预算告急?办公室墙面选对乳胶漆+木饰面,省一半钱还显高级

办公室墙面装修&#xff0c;最纠结的问题莫过于&#xff1a;选乳胶漆还是木饰面&#xff1f;前者经济实用、灵活百搭&#xff0c;后者质感高级、温润大气&#xff0c;很多企业在二者之间反复权衡&#xff0c;却忽略了一个关键答案——乳胶漆与木饰面搭配使用&#xff0c;才是兼…...

PyTorch预训练模型‘解剖课’:以VGG19为例,彻底搞懂如何自定义输出层(避坑指南)

PyTorch预训练模型‘解剖课’&#xff1a;以VGG19为例&#xff0c;彻底搞懂如何自定义输出层&#xff08;避坑指南&#xff09; 当你第一次拿到一个预训练好的VGG19模型&#xff0c;兴奋地准备用它提取图像特征时&#xff0c;却发现自己被卡在了第一步——这个"黑箱"…...

开源硬件测试框架OpenClaw Harness:从GPIO到CI/CD的自动化测试实践

1. 项目概述&#xff1a;一个开源硬件测试框架的诞生最近在折腾一些嵌入式开发和硬件原型项目&#xff0c;发现一个挺普遍的问题&#xff1a;当你手头有一堆传感器、执行器或者自己设计的电路板时&#xff0c;怎么高效、可靠地对它们进行功能测试和性能验证&#xff1f;用万用表…...

告别混乱搜索:一文搞懂Quartus前仿真的两种玩法(Modelsim调用 vs VWF内嵌)

Quartus前仿真实战指南&#xff1a;Modelsim与VWF的高效选择策略 从Verilog到可靠仿真的关键跨越 当你完成了一段Verilog代码的编写&#xff0c;那种成就感往往伴随着一个迫切的需求&#xff1a;如何快速验证这段代码的行为是否符合预期&#xff1f;在Quartus开发环境中&#x…...

Instill Core:一站式AI应用构建平台,从数据处理到模型部署全流程实战

1. 项目概述&#xff1a;一站式AI应用构建平台如果你正在为如何将一堆杂乱无章的文档、图片、音频视频数据&#xff0c;转化为可供AI模型直接“食用”的格式而头疼&#xff0c;或者厌倦了在模型部署、API编排和数据处理工具之间反复横跳&#xff0c;那么Instill Core的出现&…...

为什么92%的团队用错Gemini做Slides?——基于17家SaaS公司实测数据的生成效率断层分析

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini生成Slides的底层机制与能力边界 Gemini 生成幻灯片&#xff08;Slides&#xff09;并非简单地将文本转为 PPT 页面&#xff0c;而是依托多模态大模型对语义结构、视觉层级与演示逻辑的联合建模。…...