常见的缓存更新策略

news/2025/2/23 2:33:08/

Cache Aside Pattern(旁路缓存模式)

Cache Aside Pattern 是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。

读写步骤

写:

  1. 更新DB
  2. 删除缓存

读:

  1. 缓存读数据,读到直接返回
  2. 未读取到直接从db读取
  3. db读取的数据同步到缓存

为什么删除 cache,而不是更新 cache?

获取缓存中的数据需要浪费资源去修改,频繁修改就会大量浪费

在写数据的过程中,可以先删除 cache ,后更新 db 么?

不行

请求 1 先把 cache 中的 A 数据删除;

2 请求 2 从 db 中读取数据;

3 请求 1 再把 db 中的 A 数据更新。 这就会导致请求 2 读取到的是旧值。

但是可以使用延时双删来实现这个缺点

在写数据的过程中,先更新 db,后删除 cache 就没有问题了么?

同步数据到缓存时,同步失败就会出现数据不一致,使用重试机制解决

缺点

1.首次请求数据肯定不在缓存

解决办法:采用预热方式

2.写操作频繁,会降低命中率

Read/Write Through Pattern(读写穿透)

读写步骤

写(Write Through):

● 先查 cache,cache 中不存在,直接更新 db。

● cache 中存在,则先更新 cache,然后 cache 服务自己更新 db(同步更新 cache 和 db)

读(Read Through):

● 从 cache 中读取数据,读取到就直接返回 。

● 读取不到的话,先从 db 加载,写入到 cache 后返回响应。

Write Behind Pattern(异步缓存写入)

Write Behind Pattern 和 Read/Write Through Pattern 很相似,两者都是由 cache 服务来负责 cache 和 db 的读写。 但是,两个又有很大的不同:Read/Write Through 是同步更新 cache 和 db,而 Write Behind 则是只更新缓存,不直接更新 db,而是改为异步批量的方式来更新 db。


http://www.ppmy.cn/news/1572768.html

相关文章

网页版贪吃蛇小游戏开发HTML实现附源码!

项目背景 贪吃蛇是一款经典的休闲小游戏,因其简单易玩的机制和丰富的变形而深受玩家喜爱。本次开发目标是实现一款网页版贪吃蛇小游戏,并通过前端与后端结合的方式,提供一个流畅的在线体验。 实现过程 游戏逻辑设计 蛇的移动:…

Docker-数据卷

1.数据卷 容器是隔离环境,容器内程序的文件、配置、运行时产生的容器都在容器内部,我们要读写容器内的文件非常不方便。大家思考几个问题: 如果要升级MySQL版本,需要销毁旧容器,那么数据岂不是跟着被销毁了&#xff1…

【css实现边框圆角渐变效果】

效果展示 这个效果的几个核心难点&#xff1a; 边框带渐变色 边框支持设置 border-radius 内部支持透明 思考一下&#xff0c;使用 CSS&#xff0c;我们可以如何实现这个效果&#xff1f; 方法一两层盒子 // 使用两层 <div class"border-box"><div class&…

Vript-Hard——一个基于高分辨率和详细字幕的视频理解算法

一、概述 多模态学习的最新进展促进了对视频理解和生成模型的研究。随之而来的是&#xff0c;对高分辨率视频和详细说明所建立的高质量数据集的需求激增。然而&#xff0c;由于时间因素的影响&#xff0c;视频与文本的配对不像图像那样容易。准备视频和文本配对是一项困难得多…

Next.js 15【实用教程】2025最新版

官网 https://nextjs.org/docs/app/getting-started Next.js 简介 Next.js 由 Vercel 开发和维护&#xff0c;旨在解决单页应用&#xff08;SPA&#xff09;和多页应用&#xff08;MPA&#xff09;在性能和 SEO 上的不足。 核心特性 服务端渲染&#xff08;SSR&#xff09;--…

机器学习算法 - 随机森林之决策树初探(1)

随机森林是基于集体智慧的一个机器学习算法&#xff0c;也是目前最好的机器学习算法之一。 随机森林实际是一堆决策树的组合&#xff08;正如其名&#xff0c;树多了就是森林了&#xff09;。在用于分类一个新变量时&#xff0c;相关的检测数据提交给构建好的每个分类树。每个…

从词袋到Transformer:自然语言处理的演进与实战

自然语言处理(NLP)是人工智能领域中最具挑战性和吸引力的方向之一。从最早的规则系统到如今的深度学习模型,NLP技术的发展历程充满了创新与突破。本文将带你深入探讨NLP的核心技术演进,并通过代码和案例展示如何从简单的词袋模型过渡到强大的Transformer架构。 1. 词袋模型…

Rander压力测试监测,更改服务端资源node

测试策略 压力测试&#xff0c; 目前是本地VM的资源不够&#xff0c;导致压力瓶颈&#xff0c;目前本地的VM&#xff0c;CPU是6个&#xff0c;可以增加到8个&#xff0c;服务端目前资源利用率没有达到最高点 we are now using 3 nodes with 3 pods, therefore, we need the …