第十三天缓存一致性篇

news2025/1/19 14:21:56

目录

一、缓存的应用场景

二、缓存数据一致性如何保证?

三、缓存的最终一致性解决方案:


一、缓存的应用场景

1、缓存中的数据不应该是实时性一致性要求超高的,
通过缓存加上过期时间保证每天拿到的数据都是最新的即可。
2、如果实时性要求特别高,直接查询数据库即可。
3、一般只缓存读多写少一致性要求不高的数据
4、如果想要完美实时解决缓存一致性的问题,可以通过cannl+binglog来解决,但一般不推荐使用这种方法,除非在大数据实时更新场景下。

二、缓存数据一致性如何保证?

1、双写模式


修改完数据库之后,然后更新缓存。

往缓存中放入最新的数据。但可能存在脏读的问题。
这种策略的优点是可以保证缓存数据的实时性,但是需要考虑并发更新造成脏读的问题。
在高并发场景下,可能会出现多个线程同时更新缓存数据的情况,导致数据的不一致性。

 

2、失效模式

修改完数据库之后,直接删除缓存。

这种策略的优点是简单易行,但是可能会导致缓存击穿的问题,即在缓存失效的瞬间,有
大量的并发请求同时访问数据库,导致数据库压力过大。


小结:双写和失效模式都存在缓存不一致的缺点。

 

三、缓存的最终一致性解决方案


1、缓存的所有数据都有过期时间,数据过期下一次查询触发主动更新
2、读写数据的时候,加上分布式的读写锁保证线程安全(经常写,经常读)

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

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

相关文章

tcp通信,客户端服务端

进行过程 //TCP通信的流程 //服务器端(被动接受连接的角色) 1.创建一个用于监听的套接字 -监听:监听有客户端的连接 -套接字:这个套接字其实就是一个文件描述符 2.将这个监听文件描述符和本地的IP和端口绑定(IP和端口…

飞凌嵌入式AM62x核心板,赋能新一代HMI

HMI(人机界面)是系统和用户之间进行交互和信息交换的媒介,凡是涉及人机信息交流的领域都离不开人机界面,因此在许多行业内都能见到HMI的身影。随着技术的进步HMI也在持续发展和演进,除了数据收集、控制和显示外&#x…

在采购过程中保持供应商诚实的5种方法

不信任潜在供应商的心理在B2B买家中很常见。据报告称,供应商和买家之间存在着信任差距。这不是针对个人,而是健康的怀疑态度。谁不会对他们企业的潜在六七位数技术投资持怀疑态度? 企业和其供应商之间的关系通常是决定成败的关键。为此&…

SQL 条件函数 日期函数 文本函数 窗口函数

玩了几天,劳逸结合,继续复习刷题sql 一、条件函数 1.题目:现在运营想要将用户划分为25岁以下和25岁及以上两个年龄段,分别查看这两个年龄段用户数量(age为null 也记为 25岁以下) user_profile 期望结果&…

【论文阅读】MAMIL

1、基本信息 misc{Konstantinov_Utkin, title{Multi-Attention Multiple Instance Learning}, author{Konstantinov, AndreiV. and Utkin, LevV.} }2、摘要 本文提出了基于多注意力的MIL问题求解方法,该方法考虑了包中每个被分析实例的相邻实例。在该方法中&…

如何还原min.js文件

最近在看别人给的一个代码包,但是有一些文件是 xx.min.js ,这种文件在vscode中打开后是这样的 这种怎么阅读,太难了,于是全选,右键格式化文档,不管用 通过咨询群友,学到了: 回答一&#xff1…

vscode开发常用的工具栏选项,查看源码技巧以及【vscode常用的快捷键】

一、开发常用的工具栏选项 1、当前打开的文件快速在左侧资源树中定位: 其实打开了当前的文件已经有在左侧资源树木定位了,只是颜色比较浅 2、打开太多文件的时候,可以关闭 3、设置查看当前类或文件的结构 OUTLINE 相当于idea 查看当前类或接…

【计算机网络-数据链路层】流量控制与可靠传输机制

文章目录1 停止-等待协议1.1 无差错情况1.2 有差错情况——数据帧出错或丢失1.3 有差错情况——ACK 丢失1.4 有差错情况——ACK 迟到1.5 性能分析1.6 相关例题2 后退 N 帧协议(GBN)2.1 无差错情况2.2 超时重传、回退 N 帧2.3 相关例题3 选择重传协议&…

AX7A200教程(6): 串口接收图片数据,通过hdmi接口输出显示

本章节主要使用uart接收图片数据,然后通过ddr3缓存,最后通过hdmi接口显示输出,功能框图如下图所示 uart接收的图片数据位1024*768*3分辨率大小的数据,一共2359296个字节,输入图片如下图所示 图片属性 串口接收数据&…

基于matlab分析卫星星座对通信链路的干扰

一、前言此示例说明如何分析从中地球轨道 (MEO) 中的卫星星座到位于太平洋的地面站的下行链路上的干扰。干扰星座由低地球轨道(LEO)的40颗卫星组成。此示例确定下行链路闭合的时间、载波噪声加干扰比以及链路裕量。此示例需要卫星…

锚框+ssd v2 整合笔记

13.4. 锚框 — 动手学深度学习 2.0.0 documentation 13.7. 单发多框检测(SSD) — 动手学深度学习 2.0.0 documentation 锚框 一.归一化推导公式 目标检测SSD | Lee的个人博客 之前笔记有点错误 https://mp.csdn.net/mp_blog/creation/editor/129528…

输入电阻、输出电阻、特性阻抗、阻抗匹配

一、输入阻抗和输出阻抗 1.输入阻抗 输入阻抗(input impedance)是指一个电路输入端的等效阻抗。在输入端上加上一个电压源U,测量输入端的电流I,则输入阻抗Rin就是U/I。你可以把输入端想象成一个电阻的两端,这个电阻的阻值&#…

云原生助力数字原生企业业务快速迭代|阿里云峰会精彩回顾

导语: 4月11日,2023 阿里云峰会如期举行。一直以来,阿里云都积极融入企业数字原生创新发展的新浪潮,是中小企业走向数字原生坚实的支持者。阿里云坚持以数据和智能驱动,与合作伙伴、企业客户一起专注于技术创新&#x…

《Scikit Learn | MorvanZhou 》learning notes

学习资源 https://scikit-learn.org/stable/https://morvanzhou.github.io/tutorials/machine-learning/sklearn/ 文章目录1 Why Scikit Learn2 通用学习模式(牛刀小试 pipeline)3 sklearn 强大数据库(Loaders / Sample Generator&#xff0…

new/delete内存分配操作符

目录 一、C/C的内存分布 二、new与delete操作符 1.new/delete 的使用 2.new申请失败抛异常 3.new/delete操作内置类型 4.new/delete 操作自定义类型 三、operator new与operator delete函数 四、new和delete的实现原理 1.对于内置类型 2.对于自定义类型 ①new的实现…

Prophet学习(四)趋势Changepoints

目录 趋势Changepoints(Trend Changepoints) Prophet中的自动更改点检测(Automatic changepoint detection in Prophet) 调整趋势灵活性(Adjusting trend flexibility) 指定变更点的位置(Spe…

DnCNN-pytorch版本代码运行环境配置

一、DnCNN-pytorch相关下载 (1)DnCNN-pytorch版本代码下载 https://download.csdn.net/download/qq_41104871/87457414 (2)GPU版本的torch0.4.1下载 https://download.csdn.net/download/qq_41104871/87658469 (3)相对应的torchvision0.2.1下载 https://download.csdn…

Redis多级缓存搭建(结合案例学习)

文章目录一. JVM进程缓存1. 在docker中安装Mysql服务2. 向数据库中导入数据和导入案例代码3. 在dokcer中部署nginx服务器实现方向代理4. 在nginx目录下导入主页面5. 配置nginx实现反向代理6. 初步认识Caffine7. 使用Caffeine实现本地进程缓存8. 总结二. LUA语法1. 初识Lua2. 基…

TCP并发服务器模型

文章目录1. 循环服务器2. 并发服务器2.1 多进程并发服务器2.2 多线程并发服务器3. 基于TCP的文件传输服务(目前只有下载)1.tftp下载模型2.TFTP通信过程总结3.tftp下载协议分析1. 循环服务器 一次只能处理一个客户端,等这个客户端退出后,才能处理下一个客…

vue大坑:v-for的key以及props传参不当导致的闭包

为什么props传参在模版中使用没问题&#xff0c;在函数中使用不变化 场景 当我们点击上方的月份时&#xff0c;会改变下方加载的卡片信息 代码&#xff1a; 父组件&#xff1a; <divv-for"(item, index) in vocalStore.getCardMonthData":key"index"…