Redis缓存常用的3种读写策略

news/2025/3/31 21:54:26/

1、Cache Aside Pattern旁路缓存模式
Cache Aside Pattern是我们平时使用比较多的一个缓存读写模式,比较适合读请求比较多的场景。Cache Aside Pattern中服务端需要同时维系db和cache,并且是以db的结果为准。
(1)写
先更新db;
然后直接删除cache。
(2)读
从cache中读取数据,读取到就直接返回;
cache中读取不到的话,就从db中读取数据返回;
再把数据放到cache中。
2、Read/Write Through Pattern读写穿透
Read/Write Through Pattern中服务端把cache视为主要数据存储,从中读取数据并将数据写入其中。cache服务负责将此数据读取和写入db,从而减轻了应用程序的职责。
(1)写
先查cache,cache中不存在,直接更新db;
cache中存在,则先更新cache,然后cache服务自己更新db(同步更新cache和db)。
(2)读
从cache中读取数据,读取到就直接返回;
读取不到的话,先从db加载,写入到cache后返回响应。
3、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/74319.html

相关文章

性能媲美epoll的io_uring

前言 在聊 io_uring之前,我们先聊两个概念:同步和异步。 同步 所谓的同步,也就是说,所有事情的发生,都是按照一条时间线串行进行的。下一件事情必定要等到当前事情执行结束并返回结果,才能执行。 用在网…

Java基础面试题突击系列4

👩🏻 作者:一只IT攻城狮 ,关注我不迷路 ❤️《java面试核心知识》突击系列,持续更新… 💐 面试必知必会学习路线:Java技术栈面试系列SpringCloud项目实战学习路线 📝再小的收获x365天…

c语言笔试题整理

1、请填写 bool , float, 指针变量 与 “零值” 比较的 if 语句。 提示:这里“零值”可以是0, 0.0 , FALSE 或者“空指针”。 例如int 变量n 与“零值”比较的if 语句为: if ( n 0 ) if ( n ! 0 ) 以此类推。 (1)请写出bool flag 与“零值…

java学习笔记

java学习笔记 直接写出来的人可以理解的数据,在java中叫做字面量。 字面量分类: 数据类型分类: 不同的数据类型分配了不同的内存空间,不同的内存空间,所存储的数据大小是不一样的。 数据类型内存占用和取值范围…

如何实现程序开发?计算机程序开发流程

为了保证程序与问题统一,也保证程序能长期稳定使用,人们将程序的开发过程分为以下6个阶段。 (1)分析问题。编程的目的是控制计算机解决问题,在解决问题之前,应充分了解要解决的问题,明确真正的需求,避免因…

Rshiny基本函数(交互式web应用)

Rshiny基础函数 引言shiny包的下载shinyApp的构成ui的设计函数HTML类比img函数无法加载图片控件函数ui设计的输出对象 server总结 引言 R语言shiny包可以帮助我们轻松的制作交互式的web应用,并且可以搭建为独立的桌面可执行程序,非常方便制作和分享&…

Principal Site Reliability Engineer

远程工作分享,非美国地区也可以申请,链接:https://www.linkedin.com/jobs/search/?currentJobId3539602504。 我只是找工作的时候看到的,觉得还可以做个分享,不负责hire,不负责communicate,只…

力扣LCP 33. 蓄水

LCP 33. 蓄水 给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。有以下两种操作: 升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]1 蓄水&#xff1…