缓存双写一致性(笔记向)

news2024/7/4 4:22:15

就是缓存和数据数据一致性?

先操作数据库,还是先操作缓存

为什么

因为先操作缓存,操作数据库报错,缓存又不能回滚。保证数据的一致性

删除缓存还是更新缓存

删除缓存

为什么

更新缓存,或许有无效操作。一次都没操作,又更新了,比如更新了缓存,10分钟没有人用,但是又修改数据,又要改缓存。

删除缓存

下次查询缓存,缓存没有数据,便会去数据库中查。

但是在并发情况也会发生问题

上述只能在单线程情况下,并发就不可以。

就延迟双删,缓一缓,不要那么急,解决并发问题。反正就是容易读到老数据,改数据的时候,读比较快,容易读到老数据。

一个查一个写,查的时候读老数据,另外一个又在写,数据就不一致了。刚好请求b将新值写入数据,请求b删除缓存后,刚好请求a写入缓存。(后续请求访问到又是老数据)

就是那么多刚好。

在并发情况下,为了解决数据一致,要采用双写一致性

延迟双删

延迟一段时间后,再删除缓存,在第一次删除缓存后,延迟一段时间后,再删除一次缓存。

不解决:有些公司他认为在并发情况下,一定不会发生数据不一致,因为他们认为读比写快。

同步延迟:第一次删除缓存,睡眠一会儿,再删除一次缓存。 

响应时间长:用户体验度不好

异步延迟:

在第一次缓存删除之后,另开一个线程,执行第二次缓存删除。 线程池

睡眠再删除第二次,使用线程池单开线程。第二次失败怎么办,再次尝试删除,如果失败再尝试几次。

消息队列延迟:可以事务消息+sleep,或者延迟消息 这个有重试,重试16次扔到死信队列去。为什么要事务消息,因为第一次成功才第二次

这延迟双删总让人不由而然想到es双写,感觉异曲同工之妙。

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

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

相关文章

Generating Diverse Structure for Image Inpainting With Hierarchical VQ-VAE

Jialun Peng1 Dong Liu1* Songcen Xu2 Houqiang Li1 1 University of Science and Technology of China 2 Noahs Ark Lab, Huawei Technologies Co., Ltd.pjlmail.ustc.edu.cn, {dongeliu, lihq}ustc.edu.cn, xusongcenhuawei.com 原文提供代码链接: GitHub - UST…

MySQL:数据类型

数据类型 1. 字符串类型2. 整数类型3. 定点数类型和浮点数类型4. 布尔类型5. 枚举和集合类型6. 日期和时间类型7. Blob类型8. JSON类型 字符串类型、数字类型、日期和时间类型、存放二进制的数据类型、存放地理数据的类型。 1. 字符串类型 字符串类型也可以用来存储邮编&…

【论文阅读】-- 研究时间序列可视化,提升用户体验

Investigating Time Series Visualisations to Improve the User Experience 摘要1 引言2 相关工作互动技巧视觉编码坐标系 3 用户研究时间序列可视化互动技巧任务实验设计 4 结果交互技术的效果视觉编码的影响坐标系的影响 5 讨论交互技术的效果视觉编码的影响坐标系的影响 6 …

(必看图文)Hadoop集群安装及MapReduce应用(手把手详解版)

前言 随着大数据时代的到来,处理和分析海量数据已成为企业和科研机构不可或缺的能力。Hadoop,作为开源的分布式计算平台,因其强大的数据处理能力和良好的可扩展性,成为大数据处理领域的佼佼者。本图文教程旨在帮助读者理解Hadoop集…

《昇思25天学习打卡营第5天|数据变换 Transforms》

文章目录 前言:今日所学:1. Common Transforms2. Vision Transforms3. Text Transforms 前言: 我们知道在进行神经网络训练的时候,通常要将原始数据进行一系列的数据预处理操作才会进行训练,所以MindSpore提供了不同类…

C语言部分复习笔记

1. 指针和数组 数组指针 和 指针数组 int* p1[10]; // 指针数组int (*p2)[10]; // 数组指针 因为 [] 的优先级比 * 高,p先和 [] 结合说明p是一个数组,p先和*结合说明p是一个指针 括号保证p先和*结合,说明p是一个指针变量,然后指…

蒂升电梯职业性格和Verify认知能力SHL测评答题攻略及薪资待遇解密!

​一、蒂升电梯职业性格和认知能力测评考什么 您好!蒂升电梯公司邀请您参加的OPQ职业性格测评和Verify认知能力测评是两种常见的评估工具,用于帮助了解个人的职场性格特点和认知能力。 OPQ职业性格测评 这是一种性格测试,通常用于评估个人在…

一文讲解Docker入门到精通

一、引入 1、什么是虚拟化 在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,它允许在一台物理机上创建多个独立的虚拟环境,这些环境被称为虚拟机(VM)。每个虚拟机都可以…

盘古5.0,靠什么去解最难的题?

文|周效敬 编|王一粟 当大模型的竞争开始拼落地,商业化在B端和C端都展开了自由生长。 在B端,借助云计算向千行万业扎根;在C端,通过软件App和智能终端快速迭代。 在华为,这家曾经以通信行业起…

Java登录管理功能的自我理解(尚庭公寓)

登录管理 背景知识 1. 认证方案概述 有两种常见的认证方案,分别是基于Session的认证和基于Token的认证,下面逐一进行介绍 基于Session 基于Session的认证流程如下图所示 该方案的特点 登录用户信息保存在服务端内存(Session对象&#xff…

Django 一对多关系

1,创建 Django 应用 Test/app9 django-admin startapp app9 2,注册应用 Test/Test/settings.py 3,添加应用路由 Test/Test/urls.py from django.contrib import admin from django.urls import path, includeurlpatterns [path(admin/,…

安装KB5039212更新卡在25% 或者 96% 进度

系统之家7月1日消息,微软在6月11日的补丁星期二活动中,为Windows 11系统推出了KB5039212更新。然而,部分用户在Windows社区中反映,安装过程中出现失败,进度条在25%或96%时卡住。对于遇到此类问题的Windows 11用户&…

YOLOv8改进 | 主干网络 | C2f融合动态卷积模块ODConv

💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效涨点》专栏介绍 & 专栏目录 | 目前已有40篇内容,内含各种Head检测头、损失函数Loss、…

Linux CentOS 7 离线安装.NET环境

下载 下载.NET 例如: aspnetcore-runtime-6.0.15-linux-x64.tar.gz 复制 复制到如下目录: /usr/local/dotnet/aspnetcore-runtime-6.0.15-linux-x64.tar.gz 解压 cd /usr/local/dotnet/ tar -zxvf aspnetcore-runtime-6.0.15-linux-x64.tar.gz 创建…

非标设备行业的数智化项目管理

近年来,中国制造快速发展,企业迫切需要加快转型升级。与传统制造业相比,高端制造业具有明显的优势:高技术、高附加值、低污染、低排放、竞争优势强。一方面,企业对于生产效率和自动化水平的要求不断提高,期…

esp12实现的网络时钟校准

网络时间的获取是通过向第三方服务器发送GET请求获取并解析出来的。 在本篇博客中,网络时间的获取是一种自动的行为,当系统成功连接WiFi获取到网络天气后,系统将自动获取并解析得到时间和日期,为了减少误差每两分钟左右进行一次校…

qt可点击的QLabel

需求——问题与思路 使用wpf实现一个可点击的超链接label相当简单(如下图),但是qt的QLabel不会响应点击事件,那就从QLabel继承一个类,然后在该类中重写mousePressEvent函数,并在该函数中对左键点击事件做响…

人工智能——常用数学基础之线代中的矩阵

1. 矩阵的本质: 矩阵本质上是一种数学结构,它由按照特定规则排列的数字组成,通常被表示为一个二维数组。矩阵可以用于描述一组数据,或者表示某种关系,比如线性变换。 在人工智能中,矩阵常被用来表示数据集…

沉浸感拉满的三模游戏外设神器!谷粒金刚3 Pro游戏手柄开箱试玩

沉浸感拉满的三模游戏外设神器!谷粒金刚3 Pro游戏手柄开箱试玩 哈喽小伙伴们好,我是Stark-C~ 对于喜欢打游戏的玩家来说,一款得力的游戏外设绝对是提升游戏体验,增加游戏乐趣的重要神器!而在众多的外设中&#xff0c…

全同态加密在大模型应用中应用

密码学简介 上文的图例基本展示了常见加密体系。加密体系,如果用比较正式的描述方法,无疑是做了三件事: 首先,通过一个生成算法 𝐾𝑒𝑦𝐺𝑒𝑛(1&#x1d70…