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

Redis缓存常用的读写策略

缓存常用的读写策略

缓存与DB的数据不一致问题,大多数都是指DB的数据已经修改,而缓存中的数据还是旧数据的情况。

旁路缓存模式

对于读操作:基本上所有模式都是先尝试从缓存中读,没有的话再去DB读取,然后写到缓存中

在这里插入图片描述

对于写操作:先更新数据,再删除旧缓存
在这里插入图片描述

为什么先修改数据库,而不是先删除缓存?

如果是先删除缓存的话,很容易引起数据不一致的问题。

比如写操作的过程中来了个读操作。在删除完缓存但数据库没有修改完的期间,来了个读请求,它就会把没有修改的数据进行缓存,后续再更新数据库之后,数据库的内容和缓存的内容就不一致了。

同样地,读取操作的过程中(DB读完了,但没有写入缓存中)来了个写请求,把DB数据改了,那么最终写入的缓存将会是旧的数据,因为DB已经被更新了。(只不过这次情况概率小,因为写入缓存的速度特别快,期间DB的数据很难被修改完成)

为什么修改数据库后要删除缓存,不能修改完数据库后直接修改缓存吗?

不能,在高并发场景下,同时处理多个写请求,如果某个写请求中间,完成了另外一个写请求,那么最后更新的缓存就会是旧的数据。但如果是先更新数据库,再删除缓存的话就不用考虑这么多了,因为下次访问会重新加载最新数据。

这种模式会有一致性问题吗,举个例子?

也会有的,但是概率比较小,具体如下:

  • 第一种情况,写操作的过程中来了读请求。更新完DB但缓存没有删掉的期间,如果来了一个读请求,此时会命中缓存,读取到的是缓存中的旧数据,但是这个缓存马上会被删掉,影响几乎可以忽略不计。
  • 第二章情况,读操作的过程中来了个写请求。请求1读取了DB的值,准备写入缓存但还没有写入,此时如果来了个写请求,将DB的数据修改了,那么之前读请求写入的缓存就是过期的缓存了。不过这种情况概率也比较小,因为写缓存的速度非常快,写缓存的期间数据被修改不太可能(除非高并发场景)。

解决方案,使用分布式锁保证更新DB和删除缓存的操作同步进行,不会受其它线程影响。

特点:

  • 实现简单,能保证最终一致性
  • 所有数据的首次读取都要经过DB,之后才能命中缓存(可以将热点数据可以提前放入 cache 中)
  • 写操作比较频繁的话导致 cache 中的数据会被频繁被删除,会影响缓存命中率

适用场景:读多写少(大多数场景)、不需要保证和数据库的强一致性

注意:根据CAP理论,如果需要数据库和缓存数据保持强一致,就不适合使用缓存,换句话说用:用缓存的本质就是牺牲一致性去换速度

读写穿透模式

旁路缓存模式是由用户去分别控制cache和DB的读写,而读写穿透是由cache服务去直接完成对DB的读写,这样减轻了程序员的职责,但是Redis没有提供直接将缓存数据写入DB的功能,所以比较少见。

对于读操作:也是先去缓存中找,然后再去DB中找,唯一不同的就是从DB找的过程是由cache程序自动进行的。

对于写操作:在更新DB的同时也更新cache本身(而不是删除),这个步骤是由缓存服务去实现的。

适用场景:需要保证数据的强一致性

缺点

  • 使用要求高,要求缓存程序对自身修改时能同步对DB进行更新,Redis就不支持

异步写入模式(写后模式)

也是由 cache 服务来负责 db 的读写,更新数据时先更新缓存中的数据,然后过一段时间再异步批量去更新db,常用在实时变化且又是非核心的数据中,比如点赞量、阅读量等等。

适用场景:对响应速度要求很高,但对一致性要求不高

缺点:如果写入DB前缓存挂了,数据就会丢失

相关文章:

Redis缓存常用的读写策略

缓存常用的读写策略 缓存与DB的数据不一致问题,大多数都是指DB的数据已经修改,而缓存中的数据还是旧数据的情况。 旁路缓存模式 对于读操作:基本上所有模式都是先尝试从缓存中读,没有的话再去DB读取,然后写到缓存中…...

9月产品更新 | 超10项功能升级,快来看看你的需求上线了吗?

Smartbi用户可以在官网(PC端下载),更新后便可以使用相关功能,也可以在官网体验中心体验相关功能。 接下来,我们一起来看看都有哪些亮点功能更新吧。 ▎插件商城 Smartbi麦粉社区的应用市场新增了“插件”模块&#xf…...

ARP协议工作原理析解 (详细抓包分析过程)

目录 1. ARP 协议 2. 工作原理 3. ARP 协议报文格式 4. ARP 缓存的查看和修改 5. tcpdump 抓包分析 ARP 协议工作原理 5.1 搭建 2 台虚拟机 5.2 在主机 192.168.0.155 打开一个shell命令行开启抓包监听 5.3 在主机 192.168.0.155 打开另一个shell命令行 telnet 192.168.…...

axure动态面板

最近转管理岗了,作为项目负责人,需要常常与客户交流沟通,这时候画原型的能力就是不可或缺的本领之一了,关于axure可能很多it行业者都不是很陌生,简单的功能呢大家就自行去摸索,我们这次从动态面板开始讲起。…...

[论文笔记]Making Large Language Models A Better Foundation For Dense Retrieval

引言 今天带来北京智源研究院(BAAI)团队带来的一篇关于如何微调LLM变成密集检索器的论文笔记——Making Large Language Models A Better Foundation For Dense Retrieval。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们&quo…...

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进,市场对国产化操作系统下的生态构建,需求越来越迫切,特别是音视频这块,今天我们讨论的是如何在linux平台实现屏幕|摄像头采集,并推送至RTMP服务。 我们知道,Linux平台&…...

梧桐数据库|中秋节活动·抽奖领取大闸蟹

有话说 众所周不知,我的工作就是做一个国产的数据库产品—中国移动梧桐数据库(简称WuTongDB)。 近期我们举办了一次小活动,来提升梧桐数据库的搜索量和知名度,欢迎大家来参加,免费抽奖领取大闸蟹哦~~~ 具…...

Python怎么发送邮件:基础步骤与详细教程?

Python怎么发送邮件带附件?怎么使用Python发送邮件? 无论是工作中的通知、报告,还是生活中的问候、邀请,电子邮件都扮演着不可或缺的角色。那么,Python怎么发送邮件呢?AokSend将详细介绍Python发送邮件的基…...

[译] 大模型推理的极限:理论分析、数学建模与 CPU/GPU 实测(2024)

译者序 本文翻译自 2024 年的一篇文章: LLM inference speed of light, 分析了大模型推理的速度瓶颈及量化评估方式,并给出了一些实测数据(我们在国产模型上的实测结果也大体吻合), 对理解大模型推理内部工…...

vue3 响应式 API:readonly() 与 shallowReadonly()

readonly() readonly()是一个用于创建只读代理对象的函数。它接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理。 类型 function readonly<T extends object>(target: T ): DeepReadonly<UnwrapNestedRefs<T>>以下…...

迁移学习与知识蒸馏对比

应用场景不同 迁移学习&#xff1a;通常用于不同但相关的任务之间的知识迁移。特别是当目标任务的数据量不足时&#xff0c;可以从一个已经在大规模数据上训练好的模型中获取有用的特征或参数。典型场景包括计算机视觉任务&#xff0c;比如你在ImageNet上训练了一个ResNet&…...

【Java-反射】

什么是反射&#xff1f; JAVA反射机制是在运行状态中&#xff0c;创建任意一个类&#xff0c;能获取这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意一个方法和属性&#xff1b;这种动态获取的信息以及动态调用对象的方法的功能称为java语言…...

移动UI设计要求越来越高,最为设计师应如何迎头赶上

一、引言 在当今数字化高速发展的时代&#xff0c;移动设备已经成为人们生活中不可或缺的一部分。随着科技的不断进步和用户需求的日益增长&#xff0c;移动 UI 设计的要求也越来越高。作为移动 UI 设计师&#xff0c;我们面临着巨大的挑战&#xff0c;需要不断提升自己的能力…...

大数据-121 - Flink Time Watermark 详解 附带示例详解

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

国行 iPhone 15 Pro 开启苹果 Apple Intelligence 教程

一、前言苹果在 iOS 18.1 测试版上正式开启了 Apple Intelligence 的内测&#xff0c;但国行设备因政策原因不支持&#xff0c;且国行设备在硬件上被锁定。不过&#xff0c;我们可以通过一些方法来破解国行 iPhone 15 Pro&#xff0c;使其能够开启 Apple Intelligence。 以下是…...

conda、anaconda、pip、torch、pytorch、tensorflow到底是什么东西?(转载自本人的知乎回答)

转载自本人的知乎回答&#xff08;截止2024年9月&#xff0c;1700赞同&#xff0c;2400收藏&#xff09; https://www.zhihu.com/question/566592612/answer/3063465880 如果你是一个大四的CS准研究生回去补基础课&#xff0c;假如是科班CS甚至科班EE的话那你基础也太差了。你…...

数据库系列之GaussDB数据库中逻辑对象关系简析

初次接触openGauss或GaussDB数据库的逻辑对象&#xff0c;被其中的表空间、数据库、schema和用户之间的关系&#xff0c;以及授权管理困惑住了&#xff0c;与熟悉的MySQL数据库的逻辑对象又有明显的不同。本文旨在简要梳理下GaussDB数据库逻辑对象之间的关系&#xff0c;以加深…...

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长&#xff0c;主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群&#xff1f;为什么要集群&#xff1f; 1.1 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢&#xff1f; ----------------…...

第 6 章图像聚类

本章将介绍几种聚类方法&#xff0c;并展示如何利用它们对图像进行聚类&#xff0c;从而寻找相似的图像组。聚类可以用于识别、划分图像数据集&#xff0c;组织与导航。此外&#xff0c;我们还会对聚类后的图像进行相似性可视化。 6.1 K-means聚类 K-means 是一种将输入数据划…...

HC-SR501人体红外传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 body_hw.h文件 body_hw.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HC-SR501人体红外模块是基于红外线技术的自动控制模块&#xff0c;采用德国原装进口LHI77…...

爆仓价格系数推导

多仓 爆仓条件&#xff1a;账户权益 < 维持保证金 即&#xff1a; Equity Maintenance Margin对于一个仓位&#xff1a; 多仓 权益&#xff1a; 权益 初始权益 (当前价 - 开仓价) 数量因为&#xff1a; 价格上涨赚钱。 空仓 权益&#xff1a; 权益 初始权益 (开仓价 -…...

破解安卓设备标识获取难题:Android_CN_OAID的全栈兼容解决方案

破解安卓设备标识获取难题&#xff1a;Android_CN_OAID的全栈兼容解决方案 【免费下载链接】Android_CN_OAID 安卓设备唯一标识解决方案&#xff0c;可替代移动安全联盟&#xff08;MSA&#xff09;统一 SDK 闭源方案。包括国内手机厂商的开放匿名标识&#xff08;OAID&#xf…...

uTinyRipper零基础实战:Unity游戏资产提取与反序列化指南

1. 这不是“破解工具”&#xff0c;而是一把Unity游戏资产的“数字考古铲” 你刚下载完一款国产独立游戏&#xff0c;想看看它的UI贴图是怎么做的&#xff1b;或者在学习Unity Shader时&#xff0c;想拆解某款商业Demo里那个流光溢散的粒子特效&#xff1b;又或者&#xff0c;你…...

Windows curl证书错误SEC_E_UNTRUSTED_ROOT解决方案

1. 这个错误不是curl的问题&#xff0c;而是Windows在替你“把关” 你在Windows命令行里敲下 curl https://api.example.com &#xff0c;结果弹出一串红色报错&#xff1a; curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - T…...

边际效应在数据分析中的应用

边际效应是一个源于经济学但广泛应用与数据分析、产品运营、策略优化的核心概念。简单来说&#xff0c;他指的是每增加一个单位的投入&#xff08;如资源、功能、用户、广告话费&#xff09;&#xff0c;所带来的额外产出&#xff08;如收入、活跃度、用户数&#xff09;。理解…...

赛场制胜参考 CTF 全套 50 个经典解题思路

CTF选手必藏的50个实战解题思路&#xff01;一篇够用&#xff01; CTF竞赛的核心逻辑 • 核心目标&#xff1a;快速拆解问题&#xff08;Flag导向&#xff09;、工具链协作、模式化思维。• 关键原则&#xff1a;先广度后深度&#xff08;优先收集信息&#xff09;、分治策略&…...

2026年想在成都装中央空调?哪家安装质保好这里有答案!

家人们&#xff0c;2026年了&#xff0c;在成都想要装中央空调的小伙伴看过来&#xff01;我作为一个在中央空调领域摸爬滚打多年的真实体验者&#xff0c;深知大家在选择空调时的纠结和痛点。就拿成都的气候来说&#xff0c;夏天闷热&#xff0c;空调得使劲儿制冷&#xff1b;…...

鬼谷八荒2026官方正版最新版pc免费下载(看到请立即转存 资源随时失效)手机版通用

下载链接 逆天改命与八荒求道&#xff1a;解析《鬼谷八荒》的幕后历程、核心玩法与行业对比 在近年来的国产独立游戏浪潮中&#xff0c;修仙题材始终占据着举足轻重的地位。而在众多作品里&#xff0c;《鬼谷八荒》凭借其独特的画风与开放世界沙盒的定位&#xff0c;一度引发了…...

2026论文写作工具红黑榜:一键生成论文工具怎么选?一篇讲透:

2026年论文写作工具红黑榜出炉&#xff0c;红榜优先选千笔AI、ThouPen、豆包&#xff0c;适配国内学术规范&#xff1b;黑榜避开低质免费工具、无真实引用平台、过度依赖全文生成的工具。选择时建议按需求匹配三维模型&#xff1a;需求匹配度 - 数据可信度 - 成本承受力。一、红…...

港澳通行证照片怎么手机拍?2026港澳通行证照片规格要求与手机拍摄方法实测

出国、赴港澳的第一步就是办理港澳通行证&#xff0c;而一张符合规范的证件照是必不可少的。很多人都会问&#xff1a;港澳通行证照片能用手机拍吗&#xff1f;怎样才能拍出符合规范的照片&#xff1f;要不要去照相馆&#xff1f;今天就给大家详细讲解港澳通行证照片的拍摄全攻…...