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

分布式缓存Spring Cache

一、缓存里的数据如何和数据库的数据保持一致?

  缓存数据一致性1)、双写模式2)、失效模式

1、缓存数据一致性-双写模式

在这里插入图片描述

2、 缓存数据一致性-失效模式

在这里插入图片描述
我们系统的一致性解决方案:
1、缓存的所有数据都有过期时间,数据过期下一次查询触发主动更新
2、读写数据的时候,加上分布式的读写锁。经常读写会有很大的影响

3、缓存数据一致性-解决方案

在这里插入图片描述

4、缓存数据一致性-解决-Canal

在这里插入图片描述

二、Spring Cache简介

1、 Spring 从 3.1 开始定义了org.springframework.cache.Cache和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术;并支持使用 JCache(JSR-107)注解简化我们开发;

2、Cache 接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache 接 口 下 Spring 提 供 了 各 种 xxxCache 的 实 现 ; 如 RedisCache , EhCacheCache , ConcurrentMapCache 等;

3、 每次调用需要缓存功能的方法时,Spring 会检查检查指定参数的指定的目标方法是否已经被调用过;如果有就直接从缓存中获取方法调用后的结果,如果没有就调用方法并缓存结果后返回给用户。下次调用直接从缓存中获取。

4、 使用 Spring 缓存抽象时我们需要关注以下两点;
(1)、确定方法需要被缓存以及他们的缓存策略
(2)、从缓存中读取之前缓存存储的数据

三、Spring Cache基础概念

在这里插入图片描述

四、Spring Cache注解

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

五、Spring Cache表达式语法

在这里插入图片描述

六、缓存穿透问题解决

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId>
</dependency>

允许 null 值缓存

相关文章:

分布式缓存Spring Cache

一、缓存里的数据如何和数据库的数据保持一致&#xff1f; 缓存数据一致性1)、双写模式2)、失效模式1、缓存数据一致性-双写模式 2、 缓存数据一致性-失效模式 我们系统的一致性解决方案: 1、缓存的所有数据都有过期时间&#xff0c;数据过期下一次查询触发主动更新 2、读写数据…...

CI2454 2.4g无线MCU芯片应用

Ci2454集成MCU芯片 | Ci2454是一款集成无线收发器和 8 位 RISC&#xff08;精简指令集&#xff09;MCU 的SOC芯片。 #Ci2454芯片 集成MCU芯片# 中国芯片# 无线收发器特性&#xff1a; 工作在 2.4GHz ISM 频段 调制方式&#xff1a;GFSK/FSK 数据速率&#xff1a;2Mbps/1Mbps…...

生成包含10个随机字母或数字的字符串,然后统计每个字符的出现次数

from random import choices from string import ascii_letters, digitsx .join(choices(ascii_lettersdigits, k10)) d dict() # 创建空字典 for ch in x:d[ch] d.get(ch, 0) 1 # x中有ch字符,个数1,并作为字典的值 print(x) print(d)也可以使用collections模块的defaul…...

huggingface 模型推理几个重要到类

pipeline 它可以让您方便地使用预训练的模型进行各种任务。当您用pipeline函数创建一个图像分割的pipeline时&#xff0c;它会自动加载和初始化一个SegformerForSemanticSegmentation的实例&#xff0c;并且封装了一些预处理和后处理的逻辑&#xff0c;例如将图像转换为张量&a…...

qml之动态元素类型

文章目录 动画例子 应用动画例子 缓动曲线例子 动画分组例子 嵌套动画代码 状态和转换代码 动画 QMlL使用插值的方式控制属性的更改。动画是在指定的时间内一些列属性的持续变化。 常用的动画类型元素动画&#xff1a;PropertyAnimation:属性值改变播放动画NumberAnimation:qr…...

超详细 | 差分进化算法原理及其实现(Matlab/Python)

差分进化(Differential Evolution&#xff0c;DE)算法是由美国学者Storn和 Price在1995年为求解Chebyshev多项式拟合问题而提出的。算法主要通过基于差分形式的变异操作和基于概率选择的交叉操作进行优化搜索&#xff0c;虽然其操作名称和遗传算法相同&#xff0c;但实现方法有…...

大二第三周总结(算法+生活)

算法&#xff1a; 题目&#xff1a;有效的括号 这个题目也是做过很多回了。主要就是数据结构中”栈“的应用&#xff0c;先进后出。 解题思路&#xff1a; 1.创建 Map 哈希表形成键值对映射 2.进行遍历字符串 在遍历过程中 如果 遍历到的字符c 是左括号&#xff0c;则入栈 pu…...

Lake Formation 和 IAM 之间的区别与联系

IAM 和 Lake Formation 都是 AWS 上的权限管理服务,且默认都是自动开启并生效的,只是如果你没有特别配置过它们,可能感觉不到它们的存在,特别是Lake Formation(后文简写为 LF),通常情况下都是“透明”的,但它确实在每次请求时进行了权限检查。本文会详细介绍一下两者之…...

音频抓取代码示例

以下是一个使用DefaultsKit库的简单爬虫程序&#xff0c;用于爬取音频。代码中使用了https://www.duoip.cn/get_proxy的API获取代理服务器。 import Foundation import DefaultsKit ​ let url "https://www.douban.com/music" // 目标网站URL let proxyUrl "…...

Hexo搭建个人博客系列之环境准备

环境准备 Git Git官网&#xff0c;安装过程,就是一直下一步,详细的看这篇文章 Git的安装 Node.js Node.js官网 Node.js的安装 注册一个GitHub账号 安装hexo 新建一个文件夹(位置任意),运行cmd(若出现了operation not permitted,就以管理员的权限来运行cmd)&#xff0c;运行…...

小程序技术在信创操作系统中的应用趋势:适配能力有哪些?

小程序技术在信创操作系统中的应用前景非常广阔&#xff0c;但也面临着一些挑战和问题。开发者需要积极应对这些挑战和问题&#xff0c;为信创操作系统的发展和推广做出贡献。同时&#xff0c;开发者也需要关注小程序技术在信创操作系统中的应用趋势&#xff0c;积极探索新的应…...

word修改公式默认字体并打出漂亮公式

文章目录 word公式简介传统方法1——mathtype传统方法2——word自带公式编辑器最简洁方法——更改word自带公式字体快捷方式效果展示 word公式简介 word自带的公式字体Cambria Math不可否认很丑&#xff0c;要打出latex格式的漂亮字体很困难。使用Markdown工具很多只能导出为不…...

Day 08 python学习笔记

函数 作用域 作用域&#xff1a;变量的访问权限 全局变量与局部变量 声明在函数外边的变量----全局变量 ----》全局作用域 函数内部的变量------局部变量 ----》局部作用域顶格创建的函数也是全局的 例&#xff1a; a 100def test_01():a 0b 110print…...

Qt Designer如何安装,打开方式

Qt Designer分为PyQt5 Qt Designer、PySide6 Qt Designer&#xff0c;下面分别介绍各自的安装方式和打开方式 首先&#xff0c;检查是否安装了python&#xff0c;使用cmd打开命令行窗口&#xff0c;输入&#xff1a; python --version若出现python的版本号&#xff0c;则已安…...

《Effective C++》知识点(1)--让自己习惯C++

多年前看过的这本书(侯捷翻译的)&#xff0c;忘得差不多了&#xff0c;重温复习一下。 1. 视C为一个语言联邦 C并不只是一个带有一组守则的一体语言&#xff1b;它是从四个次语言组成的联邦(federation)政府&#xff0c;每个次语言都有自己的规约。 次语言说明CC是C的基础&am…...

UVM 验证方法学之interface学习系列文章(八)《interface不小心引入X态问题》

前面的文章学习,想必大家都对interface 有了深入了解。大家可不要骄傲哦,俗话说:小心驶得万年船。今天,再给大家介绍一个工作中,不是经常遇到,但是一旦遇到,会让你纠结很久的事情。 前面文章提到,随着验证复杂度的不断增加,interface 的bind 的操作,是必不可少的用法…...

BBR算法的几种状态

BBR&#xff08;Bottleneck Bandwidth and Round-trip propagation time&#xff09;算法根据互联网的拥塞行为定义了四种状态&#xff1a;STARTUP、DRAIN、PROBE_BW和PROBE_RTT。下面对每种状态进行详细解释&#xff0c;并说明它们之间的区别&#xff1a; STARTUP&#xff08;…...

利用jupyter进行分类

Jupyter Notebook是一个非常强大的工具&#xff0c;可以用于各种数据分析和机器学习任务&#xff0c;包括分类问题。在Jupyter Notebook中进行分类通常需要以下步骤&#xff1a; 导入所需的库&#xff1a;首先&#xff0c;你需要导入必要的Python库&#xff0c;例如NumPy、Pand…...

【LeetCode 算法专题突破】滑动窗口(⭐)

文章目录 前言1. 长度最小的子数组题目描述代码 2. 无重复字符的最长子串题目描述代码 3. 最大连续1的个数 III题目描述代码 4. 将 x 减到 0 的最小操作数题目描述代码 5. 水果成篮题目描述代码 6. 找到字符串中所有字母异位词题目描述代码 7. 串联所有单词的子串题目描述代码 …...

按键中断控制LED灯亮灭

EXTI—外部中断/事件控制器 EXTI&#xff08;External interrupt/event controller&#xff09;—外部中断/事件控制器&#xff0c;管理了控制器的 20 个中断/事 件线。每个中断/事件线都对应有一个边沿检测器&#xff0c;可以实现输入信号的上升沿检测和下降沿的 检测。EXTI可…...

【电子技术综合设计】从零构建多功能数字钟:12/24进制切换与闹钟模块的硬件实现

1. 从零开始&#xff1a;数字钟的设计思路与核心功能 第一次接触数字钟设计的朋友可能会觉得这是个复杂的工程&#xff0c;但拆解后其实可以分成几个关键模块。我自己在大学电子设计课上完成这个项目时&#xff0c;也是从最基础的秒计数器开始一步步搭建的。这个数字钟最核心的…...

爆火背后:OpenClaw 开源AI智能体应用攻击面与安全风险系统剖析

2026年初&#xff0c;OpenClaw&#xff08;曾用名Clawdbot、Moltbot&#xff09;这一开源自主AI智能体项目在全球范围内迅速引爆关注。作为一款以聊天Bot形态运行的自动化智能体应用&#xff0c;它允许用户通过Web页面、IM工具&#xff08;如Telegram、Slack、Discord等&#x…...

如何快速上手Azure Kinect Sensor SDK:面向开发者的完整深度相机开发工具包教程

如何快速上手Azure Kinect Sensor SDK&#xff1a;面向开发者的完整深度相机开发工具包教程 【免费下载链接】Azure-Kinect-Sensor-SDK A cross platform (Linux and Windows) user mode SDK to read data from your Azure Kinect device. 项目地址: https://gitcode.com/gh_…...

ABAP ALV删除行后数据又‘复活’?一个方法搞定check_changed_data

ABAP ALV删除行数据同步异常排查指南&#xff1a;从Del键失效到check_changed_data的深度解析 在SAP系统开发中&#xff0c;可编辑ALV报表的数据同步问题堪称"经典陷阱"。许多开发者都遇到过这样的场景&#xff1a;用户信心满满地按下Del键删除行项目&#xff0c;点击…...

Keil5库文件打包避坑指南:为什么你的Lib文件宏定义无法修改?

Keil5库文件打包避坑指南&#xff1a;为什么你的Lib文件宏定义无法修改&#xff1f; 当你花费数小时将精心编写的代码打包成Keil5库文件&#xff08;.lib&#xff09;&#xff0c;却发现头文件中的宏定义修改完全无效时&#xff0c;那种挫败感每个嵌入式开发者都深有体会。这看…...

猫抓浏览器扩展完整教程:网页媒体资源嗅探与下载终极指南

猫抓浏览器扩展完整教程&#xff1a;网页媒体资源嗅探与下载终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今数字化内容消费时代&am…...

如何用猫抓浏览器扩展实现流媒体资源嗅探:从M3U8解析到批量下载的完整指南

如何用猫抓浏览器扩展实现流媒体资源嗅探&#xff1a;从M3U8解析到批量下载的完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在当今流媒体…...

微信小程序生物认证实战:如何优雅处理指纹和人脸识别的兼容性问题

微信小程序生物认证实战&#xff1a;如何优雅处理指纹和人脸识别的兼容性问题 在移动应用开发中&#xff0c;生物认证已经成为提升用户体验和安全性的重要手段。微信小程序作为轻量级应用平台&#xff0c;提供了指纹和人脸识别两种生物认证方式&#xff0c;但不同设备的支持情…...

别再只盯着NB-IoT了!手把手教你用LoRa Class B模式搞定低功耗定位器(含网关配置避坑)

低功耗定位技术实战&#xff1a;LoRa Class B模式深度解析与避坑指南 在资产管理和人员定位领域&#xff0c;低功耗广域网络&#xff08;LPWAN&#xff09;技术正掀起一场静默革命。当大多数开发者条件反射般选择NB-IoT时&#xff0c;殊不知LoRa的Class B模式正在特定场景下悄然…...

CSS Grid布局完全指南:从入门到精通的响应式设计实战

CSS Grid布局完全指南&#xff1a;从入门到精通的响应式设计实战 ⭐⭐⭐ &#x1f4a1; 摘要: CSS Grid是现代CSS最强大的布局系统!本文从基础概念到高级技巧,全面解析Grid布局的核心用法。包含20个实用案例、响应式设计模式、与Flexbox对比、浏览器兼容性方案。实测数据显示:使…...