当前位置: 首页 > 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.在计算机科学、机器人技术或…...

TargetMol明星分子—— Eragidomide Mezigdomide

Eragidomide &#xff0c;别名 CC-90009、 Cereblon modulator 1&#xff0c;是一种 GSPT1 选择性 cereblon (CRBN) E3 泛素连接酶调节剂&#xff0c;以分子胶的方式作用。它通过 CRL4CRBN 选择性靶向 GSPT1 进行泛素化和蛋白酶体降解。 Mezigdomide 货号 T10703&#xff0c;别…...

Python从入门到精通(03章):变量、数据类型与类型转换

Python从入门到精通&#xff08;第03章&#xff09;&#xff1a;变量、数据类型与类型转换 开头导语 这是本系列第03章。本文采用“知识点讲解 错误示例 正确写法 自测清单”的结构&#xff0c;目标是让你不仅能看懂&#xff0c;还能独立写出可运行代码。建议你边看边敲&…...

3分钟掌握终极ASCII艺术转换:免费将图片视频变成字符画的神奇工具 [特殊字符]

3分钟掌握终极ASCII艺术转换&#xff1a;免费将图片视频变成字符画的神奇工具 &#x1f3a8; 【免费下载链接】ASCII-generator ASCII generator (image to text, image to image, video to video) 项目地址: https://gitcode.com/gh_mirrors/as/ASCII-generator 想不想…...

3项突破重构浏览体验:从卡顿到丝滑的技术革命

3项突破重构浏览体验&#xff1a;从卡顿到丝滑的技术革命 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...

终极指南:Jellyfin豆瓣插件完整配置手册,30分钟打造中文媒体库

终极指南&#xff1a;Jellyfin豆瓣插件完整配置手册&#xff0c;30分钟打造中文媒体库 【免费下载链接】jellyfin-plugin-douban Douban metadata provider for Jellyfin 项目地址: https://gitcode.com/gh_mirrors/je/jellyfin-plugin-douban 还在为Jellyfin媒体库缺少…...

模拟OJ1 2 3

判断素数&#xff08;改错&#xff09;作者: Turbo时间限制: 1s章节: 循环问题描述给定程序的功能是&#xff1a;判断一个整数是否是素数&#xff0c;若是输出YES&#xff0c;否则输出NO!。请改正程序中的错误&#xff0c;使它能得出正确的结果。注意&#xff1a;不得增行或删行…...

LightOnOCR-2-1B GPU优化实践:vLLM推理引擎配置与显存占用压测报告

LightOnOCR-2-1B GPU优化实践&#xff1a;vLLM推理引擎配置与显存占用压测报告 你是不是也遇到过这样的烦恼&#xff1f;部署一个OCR模型&#xff0c;明明看着参数不大&#xff0c;但一跑起来&#xff0c;显存就蹭蹭往上涨&#xff0c;甚至直接爆掉。或者&#xff0c;服务启动…...

Node.js内存泄漏排查指南:从Chrome DevTools到heapdump的实战记录

Node.js内存泄漏排查实战&#xff1a;从预警信号到精准修复 当线上监控系统突然发出内存告警&#xff0c;你的Node.js服务正在以每小时100MB的速度吞噬服务器内存——这不是演习&#xff0c;而是一场真实的生产事故前兆。作为经历过数十次内存泄漏战役的老兵&#xff0c;我将带…...

Z-Image-Turbo-辉夜巫女实战落地:高校数字艺术课程AI绘图实验课教案设计

Z-Image-Turbo-辉夜巫女实战落地&#xff1a;高校数字艺术课程AI绘图实验课教案设计 1. 项目背景与教学价值 在数字艺术教育领域&#xff0c;AI绘图技术正逐渐成为重要的教学工具。Z-Image-Turbo-辉夜巫女是基于Z-Image-Turbo模型的Lora版本&#xff0c;专门针对"辉夜巫…...

机器人抓手设计必看:用CATIA有限元分析确保Base板刚度的5个关键步骤

机器人抓手设计进阶指南&#xff1a;CATIA有限元分析在Base板刚度优化中的实战应用 在工业自动化领域&#xff0c;机器人抓手的性能直接影响生产效率和产品质量。作为承载整个抓取机构的核心部件&#xff0c;Base板的设计不仅需要考虑强度&#xff0c;更要确保足够的刚度以避免…...