Cache aside

旁路缓存,旁路缓存操作逻辑是查询缓存,如果不存在那么就读取数据库并更新到缓存当中.

如果是更新数据库,那么操作完数据库后,删除缓存.

注意旁路缓存,缓存中的内容是不做更新操作的,只有写入和删除操作.

问题

1.请求1查询不到缓存,查询数据库.请求2更新数据,删除缓存,请求1写入缓存.这时缓存当中的数据就是旧的数据.

解决方法:
给缓存的数据加一个过期的时间,尽可能减少过期缓存发生的概率.缓存的过期时间也不宜过短,过短导致缓存的作用减少.

2.更新频繁的场景下会导致缓存频繁的被删除,降低了缓存的作用

解决方法:
使用Write through,可以减少这种情况的发生.

适用场景

用于读操作较多.实现简单.

Read/Write through

核心策略:以缓存为操作为主,数据存先存在于缓存,缓存的数据是不会过期的.

Read Through:先查询缓存中数据是否存在,如果存在则直接返回,如果不存在,则由缓存组件负责从数据库中同步加载数据.

Write Through:先查询要写入的数据在缓存中是否已经存在,如果已经存在,则更新缓存中的数据,并且由缓存组件同步更新到数据库中,,果缓存中数据不存在,我们把这种情况叫做Write Miss(写失效),图中以Write allocate方式.

Write Miss解决方式:一个是“Write Allocate(按写分配)”,做法是写入缓存相应位置,再由缓存组件同步更新到数据库中,图中就是指的是这种方式;另一个是“No- write allocate(不按写分配)”,做法是不写入缓存中,而是直接更新到数据库中.

适用场景

用于读操作较多.相较于Cache aside而言更适合缓存一致的场景.
使用简单屏蔽了底层数据库的操作,只是操作缓存.
这种方式其实可以以Redis为存储,对数据的持久性要求较低的.

Write Back(Write behind)

Write back是相较于Write Through而言的一种异步回写策略.
异步写可以减少与物理磁盘存储的交互,也可以进行合并写等优化.

问题

实现比较复杂,可能会丢失数据.

适用场景

用于读少写多的场景,Linux系统的页缓存和MySQL InnoDB 引擎的Cache Pool其实就是使用的WriteBack策略.
相较于Write through 而言拥有更高的写入性能.

总结

不管是哪种缓存策略都无法保证数据库与缓存的一致性.因此业务层要对缓存的数据有一定的容忍,缓存中的数据可能是过期的或者是无效的数据.

三种缓存策略分析:Cache aside,Read/Write through,Write Back相关推荐

  1. 三种缓存策略:Cache Aside 策略、Read/Write Through 策略、Write Back 策略

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林. 今天跟大家聊聊,常见的缓存更新策略. Cache Aside(旁路缓存)策略: Rea ...

  2. MySQL缓存策略分析

    一.背景介绍 众所周知,常用的关系型数据库MySQL底层是以B+树来组织存储在磁盘中的数据,而由于磁盘IO的读写性能较差,加之实际业务场景中读操作的次数要数倍于写操作.因此,适当的将读写操作分离,设计 ...

  3. Azure数据仓库表中的数据经常使用的三种分布策略(hash、round_robin 或 replicated)简介

    目录 (一)前言 (二)基础概念 1. Azure Synapse Analytics概念 2. Synapse SQL 体系结构组件 3. Azure 存储 4. 控制节点 5. 计算节点 6. 数 ...

  4. Hibernate的三种检索策略

    1 N+1问题 Hibernate的Session缓存中存放的是相互关联的对象图,默认情况下,当从数据库中加载一个对象的时候,会同时加载它所关联的其他对象.例如:Clazz(班级)跟Student(学 ...

  5. 数据库恢复技术(事物、三种更新策略以及恢复策略)

    数据库恢复技术(事物.三种更新策略以及恢复策略) 数据库恢复所要达到的目标 数据库为了达到目标的恢复策略 事务和日志的基本内容 事务的基本内容 日志的基本内容 更新数据库规则和三种更新策略 数据库更新 ...

  6. 负载均衡方案的三种实现策略

    早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求.随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就 ...

  7. Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow

    摘要:聊一聊Git中的工作流--分支策略. 本文分享自华为云社区<Git工作流中常见的三种分支策略:GitFlow.GitHubFlow以及GitLabFlow>,原文作者:敏捷的小智. ...

  8. 会员营销中,沉寂会员的三种运营策略

    在会员营销中,企业主要做的主要有两件事情,第一件事情就是想办法将用户转化成企业会员:第二件事就是将会员进行转化,达成企业收益提升以及用户增长的目的,这就是开展企业会员营销时企业需要做的两件事情,这两件 ...

  9. 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网关API

    通过三种情况深度分析,复杂的公网环境,网络穿透如何做到? 视频讲解如下,点击观看: 通过三种情况深度分析,复杂的公网环境,网络穿透如何做到?丨C++后端开发丨P2P丨c/c++Linux服务器开发丨网 ...

最新文章

  1. linux 内核编译错误 .size expression for copy_user_generic_c does not evaluate to a constant
  2. 一滴油怎样造就了一种健康生活方式?
  3. CodedInputStream encountered an embedded string or message which claimed to have negative size.
  4. 使用 ABAP Open SQL 的 Select AS 别名,提高代码可读性
  5. 前端学习(1702):前端系列javascript之this
  6. python三种数据类型_Python-更改Pandas中列的数据类型
  7. MYSQL5.6服务启动不起来
  8. 北乐博客装饰分享CSS+HTML+js
  9. 远程会议总卡顿?8 个“小白”办法一看就会!
  10. 从此,我就踏入IT行业拉
  11. LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
  12. php如何触发html,html想触发php函数可以吗?
  13. 计算机实战项目之 [含论文+任务书+中期检查表+答辩PPT+源码等]基于javaweb大学生助学贷款管理系统
  14. 移动前端开发之viewport的深入理解
  15. macOS中显示按键操作
  16. 使用mergeAssets对Android的assets文件在构建的时候进行修改处理
  17. Jboss部署Springboot项目
  18. 工业互联网与高端装备健康管理解决方案
  19. 论文阅读 (64):Weakly-supervised Video Anomaly Detection with Robust Temporal Feature Magnitude Learning
  20. 以中断方法设计单片机秒、分脉冲发生器

热门文章

  1. 2009年8月8日纪念奥运开幕一周年
  2. 贴片铝电容识别及型号_贴片电容的种类识别
  3. PC机服务器的电源与台式机的电源有什么区别
  4. php 默认图片,武磊西甲告别战再现“罕见”1幕:开场3分钟连续2次“抱怨”队友...
  5. 第五版人民币冠号印制顺序表
  6. 微信小程序调试webview_使用 Appium 测试微信小程序 Webview
  7. 动圈耳机振膜_首款纯铍振膜动圈入耳式耳机,惊喜来袭
  8. 【MaxScale介绍】
  9. 婚礼上新郎经典发言稿
  10. 第一讲: HTML简介、转义字符、CSS样式、基本选择器