Redis维护缓存的方案选择

Redis中间件常常被用作缓存,而当使用了缓存的时候,缓存中数据的维护,往往是需要重点关注的,尤其是重点考虑的是数据一致性问题。以下是维护数据库缓存的一些常用方案。

1、先删除缓存,再更新数据库

导致数据不一致的场景:

最终结果:数据库存储的是新值,缓存存储的是旧值,导致数据不一致

2、先更新数据库,再删除缓存

最终结果:A线程删除缓存失败,导致缓存中一直存的是旧值。但是实际上,删除缓存失败这个异常场景不在此范围讨论中(可以加入重试机制),因此,此方案数据一致性问题不大,但是可能导致穿透问题(缓存数据删除后,瞬间大量请求穿过缓存,直接打到数据库。但是,但凡是删除缓存都有可能导致穿透问题)

3、先更新数据库,然后更新缓存

最终结果:更新缓存的时间不确定,有先有后,可能导致旧值覆盖新值的问题。而且性能不好,一万次请求就得更新一万次缓存。

4、延时双删

在方案一的基础上,增加了一次删除缓存的操作。回想方案一,导致数据不一致的问题是,A线程在B线程之后更新完数据库后,没有去处理缓存数据。因此,在更新完数据库后,再删除一次缓存便可(本质上就是方案一与方案二的结合)

总体流程:先删除缓存,然后再更新数据库,更新完数据库后,延时再删除一次缓存,做兜底操作。

更新数据库前删一次缓存,是因为,防止在更新数据库后的瞬间,有人直接命中缓存,拿到旧数据

更新数据库后再删一次缓存,是因为,有人通过查库拿到旧数据,设置值进了缓存(方案一数据不一致的情况),之所以要延时,是因为要保证,第二次删除的时机要在其他人写数据之后,否则白删。

注意:既然是删除缓存数据,依然会导致缓存穿透的问题。

根据实际业务场景,我选择了方案三:先更新数据库,再更新缓存。原因如下:

1、修改缓存的入口只有一个,在控制台中设置,不存在多个线程修改缓存的情况

2、读的入口有多个,有许多定时器会在自己的业务中读缓存值,有并发且量十分大,因此,需要考虑缓存穿透问题(不能删除缓存)

3、缓存中存的实际是业务配置,读多写少,大量更新操作导致性能消耗的场景不存在

每一种方案都存在他的优缺点。在理想中,我们往往希望能适用所有场景的方案,但是,现实往往很骨感,一劳永逸的方法几乎只存在于某个乌托邦。方案没有好坏之分,只有是否适合自己的应用场景之别。

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

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

相关文章

OpenAI内斗剧情反转!微软力保ChatGPT之父回归?

美东时间11月17日下午,全球最热门的聊天机器人ChatGPT开发商OpenAI宣布了一项重磅管理层调整,Sam Altman将辞去CEO一职,并离开公司董事会。 Altman被踢出的消息除了让业界担心会影响该公司未来发展外,OpenAI另一位共同创办人暨总裁…

京东小程序:无代码开发实现API集成,连接电商平台、CRM和客服系统

无需复杂API开发,京东小程序连接电商平台 京东小程序平台以其全开放的生态模式,让商家享有京东系APP流量福利、海量SKU和开放能力,提升用户体验,同时也带来了新商机。京东小程序的最大优势在于,商家无需进行复杂的API…

系统设计之通讯协议

一、通讯协议 架构风格定义了应用程序编程接口 (API) 的不同组件如何相互交互。因此,它们通过提供设计和构建 API 的标准方法来确保效率、可靠性以及与其他系统集成的便捷性。以下是最常用的样式: 1. SOAP 成熟、全面、基于XML 最适合于企业应用 可扩展…

城市生命线丨桥梁健康监测系统应用详情

现代城市当中,桥梁的重要性以及危险性是最高的,因此,对于桥梁的安全健康监测就会变得更加的重要,在科技发展的今天,新型基础设施已经能够准确、实时的监测桥梁的安全和健康。 WITBEE万宾助力建设更健康,智慧…

sentinel 网关

网关简介 大家都都知道在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用。 这样的架构,会存在…

【Python】12 GPflow安装

概述 GPflow 是一个基于TensorFlow 在 Python 中构建高斯过程模型的包。高斯过程是一种监督学习模型。 高斯过程的一些优点是: 不确定性是高斯过程的固有部分。高斯过程可以在不知道答案时告诉您。适用于小型数据集。如果您的数据有限,高斯过程可以从…

Yolov8部署——vs2019遇到的问题

Yolov8部署——vs2019遇到的问题 问题一: 默认库"LIBCMT"与其他库的使用冲突 解决方法:选择自己的项目右键属性——c/c——代码生成——运行库(多线程(/MT) 问题二: 文件包含在偏移0x18处开始…

buildadmin+tp8表格操作(2)----表头上方按钮绑定事件处理,实现功能(全选/全不选)

buildAdmin 表格上方的按钮添加完成之后, 就要对其实现功能了 有了上面的说明, 我就只要得到了 ref 中的表格对象, 就可以象el-table 一样来操作表格的属性和方法了 我们来实现上面的几个按钮的方法 全选/全不选 上面就是添加按钮功能的全过…

算法——动态规划(新)

什么是动态规划? 动态规划算法的基本思想-求解步骤-基本要素和一些经典的动态规划问题【干货】-CSDN博客 一、三步问题 面试题 08.01. 三步问题 - 力扣(LeetCode) 思路 我们要知道,走楼梯,前三个阶梯步数已经知道&…

4-5学生分数对应的成绩

![#include<stdio.h> int main(){float score;char grade;for(int i0;i<7;i){printf("请输入成绩&#xff1a;");scanf("%f",&score);while(score>100||score<0){printf("\n输入的成绩有误&#xff0c;请重新输入&#xff1a;&quo…

深入了解百度爬虫工作原理

在当今数字化时代&#xff0c;互联网已经成为人们获取信息的主要渠道之一。而搜索引擎作为互联网上最重要的工具之一&#xff0c;扮演着连接用户与海量信息的桥梁角色。然而&#xff0c;我们是否曾经好奇过当我们在搜索引擎中输入关键词并点击搜索按钮后&#xff0c;究竟是如何…

【18年扬大真题】给定有m个整数的递增有序数组a和有n个整数的递减有序数组b,将a数组和b数组归并为递增有序的数组c

【18年扬大真题】 给定有m个整数的递增有序数组a和有n个整数的递减有序数组b&#xff0c; 将a数组和b数组归并为递增有序的数组c。 void Merge(int arr[],int m ,int brr[],int n,int crr[]) {int i 0;int j n-1;int k 0;while(i < m&&j > 0) {if (arr[i] &l…

Cesium 问题:输出的 纬度 latitude 是 0

文章目录 问题分析问题 在坐标转换的时候,出现如下问题 分析 在检查代码后,发现我将转换之前的高度默认设置为了 0 ,因此没能正确转换 let positionsOnCircle = [];// 圆面边缘的点 let numPoints = 360; for (let i

asp.net在线考试系统+sqlserver数据库

asp.net在线考试系统sqlserver数据库主要技术&#xff1a; 基于asp.net架构和sql server数据库 功能模块&#xff1a; 首页 登陆 用户角色 管理员&#xff08;对老师和学生用户的增删改查&#xff09;&#xff0c;老师&#xff08;题库管理 选择题添加 选择题查询 判断题添加…

图片叠加_图片压缩

图片叠加 try {/* 1 读取第一张图片*/File fileOne new File("1.png");BufferedImage imageFirst ImageIO.read(fileOne);/* 2读取第二张图片 */File fileTwo new File("2.png");BufferedImage imageSecond ImageIO.read(fileTwo);//创建一个最底层画…

STM32 SPI

SPI介绍 SPI是Serial Pepheral interface缩写&#xff0c;串行外围设备接口。 SPI接口是一种高速的全双工同步通信总线&#xff0c;已经广泛应用在众多MCU、存储芯片、AD转换器和LCD之间。大部分STM32有3个SPI接口&#xff0c;本实验使用的是SPI1。 SPI同一时刻既能发送数据&…

vue3+vite+ts 发布自定义组件到npm

vue3vite 发布自定义组件到npm 初始化项目编写组件配置打包组件上传到npm测试组件库 初始化项目 // 创建项目 pnpm create vite vue-test-app --template vue-ts// 运行项目 cd vite vue-test-app pnpm install pnpm run dev编写组件 1、根目录下创建packages目录作为组件的开…

MindNode v5.0.1(思维导图软件)

思维导图软件哪个比较好呢&#xff1f;MindNode for mac一款功能简单&#xff0c;界面简洁&#xff0c;不用看教程都会用的思维导图软件。mindnode mac可随时随地记录自己的想法&#xff0c;让您从灵感入手&#xff0c;将奇思妙想铺陈在画布上&#xff0c;让一切井井有条。 Mi…

企业实现员工聊天和转账行为的实时监管

如何解决企业营销团队的管理问题&#xff1f; 在当今竞争激烈的市场环境中&#xff0c;企业营销团队的管理显得尤为重要。营销团队是企业发展的重要支柱&#xff0c;然而&#xff0c;一些常见的问题如员工飞单、私单、辱骂删除客户、离职带走公司客户以及工作不认真、工作量无…

【Linux网络】典型NAS存储方式:NFS网络共享存储服务

一、关于存储的分类 二、NFS的介绍 nfs的相关介绍&#xff1a; 1、原理 2、nfs的特点 3、nfs软件学习 4、共享配置文件的书写格式 关于权限&#xff0c;学习&#xff1a; 5、关于命令的学习&#xff1a; 三、实验操作 1、nfs默认共享权限&#xff08;服务端设置&#…