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

常见的缓存更新策略

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。

相关文章:

  • 【Docker】容器被停止/删除的方式及命令:全面解析与实践指南
  • Express 中间件分类
  • Vue和React的区别
  • C# 特性 学习记录
  • springboot023学生宿舍管理系统
  • 《LSTM与HMM:序列建模领域的双雄对决》
  • GPU的核心的时钟频率,使用什么命令查看和计算
  • 蓝桥杯 Java B 组之简单数学问题(素数判断、最大公约数)
  • 在anaconda环境中构建flask项目的exe文件
  • DrissionPage(实战)
  • GitHub 使用教程:从入门到进阶
  • 异构计算架构助力智能座舱实现高效低耗体验
  • PMTUD By UDP
  • RK3588开发板部署DeepSeek-R1-Distill-Qwen-1.5B的步骤及问题
  • OSI 参考模型和 TCP/IP 参考模型
  • AI技术+Xsens惯性捕捉技术:科技碰撞下的无限可能
  • 【网络测试】tmux工具常用指令
  • 单片机上SPI和IIC的区别
  • 动态建表并插入数据
  • 【uniapp-小程序】实现方法调用的全局tips弹窗
  • 巴基斯坦空袭印度多地空军基地,巴战机进入印领空
  • 国家统计局:4月份居民消费价格同比下降0.1%
  • 理财经理泄露客户信息案进展:湖南省检受理申诉,证监会交由地方监管局办理
  • 七大交响乐团“神仙斗法”,时代交响在上海奏出时代新声
  • 85后清华博士黄佐财任湖北咸宁市咸安区委副书记、代区长
  • 山寨“小米”智能马桶、花洒销售额过亿,被判赔3500万元