每日一博 - 图解5种Cache策略

文章目录

  • 概述
  • 读策略
    • Cache Aside
    • Read Through
  • 写策略
    • Write Through
    • Write Around
    • Write Back
  • 使用场景举例

在这里插入图片描述


概述

缓存是在系统中存储数据的临时存储器,用于提高访问速度。缓存策略定义了如何在缓存和主存之间管理数据


读策略

Read data from the system:
🔹 Cache aside
🔹 Read through
在这里插入图片描述


Cache Aside

概念: 应用程序负责将数据写入和从缓存读取,缓存不主动参与。
作用: 简化实现,但可能导致缓存脏数据。

应用程序自己管理缓存。当需要数据时,应用程序会先在缓存中查找,如果不存在,才到数据库中加载。加载到数据库后,同时保存到缓存中。这种策略简单直接,应用程序有完全控制权。但问题是代码复杂,需要自己处理缓存失效、预热、异步加载等问题。

在这里插入图片描述


Read Through

概念: 数据访问时,缓存负责检查是否有所需数据。如果不存在,缓存负责从主存中获取。
作用: 自动化数据加载,减少了应用程序的负担,但可能导致读取性能损失。

应用程序只查询缓存,不直接访问数据库。如果缓存不存在,则自动从数据库加载,然后返回给应用程序,同时更新缓存。这简化了应用程序代码,但也限制了应用程序直接访问数据库

在这里插入图片描述


写策略

Write data to the system:
🔹 Write around
🔹 Write back
🔹 Write through

在这里插入图片描述

Write Through

概念: 写入时同时到缓存和主存,确保主存和缓存中的数据一致。
作用: 数据一致性,但可能导致写入性能较低。

数据修改请求直接写入数据库,同时也保存到缓存中(不是所有实现都这么做)。所以,缓存能保证和数据库一致性。但每次写操作都会比较慢

在这里插入图片描述


Write Around

概念: 写入时直接到主存,而不是到缓存。缓存只在读取时更新。
作用: 避免缓存污染,适用于大量写入但很少读取的情况。

直接写入数据库,但不写入缓存。这可以减轻缓存的压力,但是读取数据时缓存在没有命中,需要从数据库中加载数据然后放入缓存,性能比较差。

在这里插入图片描述


Write Back

概念: 写入时只到缓存,延迟写回主存。缓存跟踪哪些数据被修改。
作用: 提高写入性能,但可能导致数据不一致。

在这里插入图片描述


使用场景举例

  1. Cache Aside:

    • 案例: 在一个电子商务网站中,商品信息被频繁读取,但更新并不频繁。采用 Cache Aside 策略,应用程序在需要时直接从数据库读取商品信息,然后将其缓存在内存中。如果有更新,应用程序负责同时更新数据库和缓存。
  2. Read Through:

    • 案例: 在一个社交媒体应用中,用户的个人资料信息经常被访问。使用 Read Through 策略,当用户请求个人资料时,缓存会检查是否存在,如果不存在,它将从数据库中读取用户的个人资料并将其存储在缓存中,以便下一次访问。
  3. Write Around:

    • 案例: 在一个日志记录系统中,日志条目的写入频率很高,但很少读取。采用 Write Around 策略,应用程序直接将日志写入主存储,而不将其写入缓存。缓存仅用于读取请求,以避免缓存污染。
  4. Write Back:

    • 案例: 在一个文件系统中,用户频繁编辑文档。使用 Write Back 策略,文件系统将用户编辑的文档暂时保存在缓存中,而不是立即写回主存储。只有当缓存满或文档不再被频繁访问时,才将更改写回主存储。
  5. Write Through:

    • 案例: 在一个金融交易系统中,每笔交易都需要确保立即写入主存储并更新缓存。采用 Write Through 策略,系统在执行每笔交易时同时将数据写入缓存和主存储,以确保数据的一致性。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何从众多知识付费平台中正确选择属于自己的平台(我有才知识付费平台)

在当今的知识付费市场中,用户面临的选择越来越多,如何从众多知识付费平台中正确选择属于自己的平台呢?下面,我们将为您介绍我有才知识付费平台相比同行的优势,帮助您做出明智的选择。 一、创新的技术架构,…

Oracle中LISTAGG 函数 的使用

概念:对于查询中的每个组,LISTAGG 聚合函数根据 ORDER BY 表达式对该组的行进行排序,然后将值串联成一个字符串

一键优化工具,十分不错的win7、win10系统优化的工具,可以帮助用户轻松快速优化系统,供大家学习研究参考~

主要功能 01、禁用索引服务 02、禁止window发送错误报告 03、禁用"最近使用的项目” 04、关闭Windows Defender 05、关闭防火墙 06、检查更新而不自动下载更新 07、启动电源计划“高性能” 08、调整电源选项 09、禁用休眠(删除休眠文件) 10、开启快速启动 11、…

C语言-每日刷题练习

[蓝桥杯 2013 省 B] 翻硬币 题目背景 小明正在玩一个“翻硬币”的游戏。 题目描述 桌上放着排成一排的若干硬币。我们用 * 表示正面,用 o 表示反面(是小写字母,不是零),比如可能情形是 **oo***oooo,如果…

【高数:3 无穷小与无穷大】

【高数:3 无穷小与无穷大】 1 无穷小与无穷大2 极限运算法则3 极限存在原则4 趋于无穷小的比较 参考书籍:毕文斌, 毛悦悦. Python漫游数学王国[M]. 北京:清华大学出版社,2022. 1 无穷小与无穷大 无穷大在sympy中用两个字母o表示无…

第 375 场 LeetCode 周赛题解

A 统计已测试设备 模拟&#xff1a;记录当前已测试设备数量 class Solution { public:int countTestedDevices(vector<int> &batteryPercentages) {int res 0;int s 0;for (auto x: batteryPercentages) {if (x - s > 0) {res;s;}}return res;} };B 双模幂运算 …

Course3-Week1-无监督学习

Course3-Week1-无监督学习 文章目录 Course3-Week1-无监督学习1. 欢迎1.1 Course3简介1.2 数学符号约定 2. K-means算法2.1 K-means算法的步骤2.2 代价函数2.3 选择聚类数量 3. 异常检测3.1 异常检测的直观理解3.2 高斯分布3.3 异常检测算法3.4 选取判断阈值 ε \varepsilon ε…

面试操作系统八股文五问五答第一期

面试操作系统八股文五问五答第一期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1.死锁产生的条件 1.互斥条件&#xff0c;即当资源被一个线程使用&#xff08;…

安全高效 江西变电站成功应用国家电网无人机巡检

随着电力需求的迅速增长&#xff0c;电网的巡检、维护与保养变得越来越重要。为迎接这一挑战&#xff0c;江西供电公司的一座变电站成功引入了复亚智能国家电网无人机巡检系统&#xff0c;在提升巡检水平、开创新型巡检模式方面做出了重要尝试&#xff0c;为电网设备的高效巡检…

基于Java SSM框架实现宠物医院信息管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现宠物医院信息管理系统演示 java简介 Java语言是在二十世纪末由Sun公司发布的&#xff0c;而且公开源代码&#xff0c;这一优点吸引了许多世界各地优秀的编程爱好者&#xff0c;也使得他们开发出当时一款又一款经典好玩的小游戏。Java语言是纯面向对象语言…

[linux] 用命令行wget下载google drive的大文件

使用wget命令下载Google drive上的文件_ubuntu上wget下载谷歌云盘文件-CSDN博客 如何用命令行下载Google Drive上的共享文件&#xff1f;-腾讯云开发者社区-腾讯云 举例&#xff1a;https://drive.google.com/drive/folders/1vKj3VvJEKgS_o-uOSmz3I0-GomECpql3 1、在网页上&…

基于JavaWeb的物业管理系统运行部署教程

基于JavaWeb的物业管理系统 一、下载源码二、数据准备三、项目导入idea四、配置Tomcat五、修改数据库密码&运行项目六、测试项目七、问题修复 一、下载源码 源码地址&#xff1a;基于JavaWeb的物业管理系统源码 得到一个压缩包&#xff1a; 解压之后&#xff1a; 删除多…

基于SpringBoot+Vue社区医院服务系统(Java毕业设计)

点击咨询源码 大家好&#xff0c;我是DeBug&#xff0c;很高兴你能来阅读&#xff01;作为一名热爱编程的程序员&#xff0c;我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里&#xff0c;我将会结合实际项目经验&#xff0c;分享编程技巧、最佳实践以及解决问题的…

自适应中值滤波器的python代码实现-----冈萨雷斯数字图像处理

基本原理&#xff1a; 自适应中值滤波器是一种图像处理技术&#xff0c;用于去除图像中的噪声。其原理是根据像素周围邻域内像素值的特性&#xff0c;动态地选择滤波器的大小和中值滤波的程度。 **邻域选择&#xff1a;**对于每个像素点&#xff0c;选取一个窗口或者邻域&…

【数组Array】力扣-167 两数之和II-输入有序数组

目录 题目描述 解题过程 labuladong题解 题目描述 给你一个下标从 1 开始的整数数组 numbers &#xff0c;该数组已按 非递减顺序排列 &#xff0c;请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设这两个数分别是 numbers[index1] 和 numbers[index2] &a…

归并排序与自然归并排序

归并排序 归并排序(merge - sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用.将已有的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序.若将两个有序表合并成一个有序表,成为二路归并. 核心步骤讲解 归并排序的…

题目:肖恩的乘法表(蓝桥OJ 3404)

题目描述&#xff1a; 解题思路&#xff1a; 本题采用二分中的二分答案。且本题check()用不到开数组&#xff0c;所以不需要开数组&#xff0c;脑海中想象一个数组就好了 题解&#xff1a; #include<bits/stdc.h> using namespace std; using ll long long;ll n, m , k…

Vue之模板语法

模板语法有两大类&#xff1a; 1.插值语法 2.指令语法 让我为大家介绍一下吧&#xff01; 一、插值语法 功能:用于解析标签体内容。 写法: {{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 举个例子&#xff1a; <!DOCTYPE html> &l…

Chrome浏览器中访问http会自动跳转https下,导致请求和文件不能正常访问

网上查了很多解决方案&#xff0c;例如清楚缓存等等其他方法&#xff0c;都不能解决该问题 例如&#xff1a; 地址栏输入&#xff1a; chrome://net-internals/#hsts找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 搞定了…

专业课145+总分440+东南大学920考研专业基础综合信号与系统数字电路经验分享

个人情况简介 今年考研440&#xff0c;专业课145&#xff0c;数一140&#xff0c;期间一年努力辛苦付出&#xff0c;就不多表了&#xff0c;考研之路虽然艰难&#xff0c;付出很多&#xff0c;当收获的时候&#xff0c;都是值得&#xff0c;考研还是非常公平&#xff0c;希望大…