如何制定一个有效的美术馆网站建设项目合同?
摘要:关于美术馆网站建设的方案,建筑工程合同书范本,行情软件免费下载,浙江广厦建设职业技术学院招生网站美团2面:如何保障 MySQL 和 Redis 的数据一致性? 说在前面 在尼恩的&
关于美术馆网站建设的方案,建筑工程合同书范本,行情软件免费下载,浙江广厦建设职业技术学院招生网站美团2面#xff1a;如何保障 MySQL 和 Redis 的数据一致性#xff1f;
说在前面
在尼恩的#xff08;50#xff09;读者社群中#xff0c;经常遇到一个 非常、非常高频的一个面试题#xff0c;但是很不好回答#xff0c;类似如下#xff1a; 如何保障 MySQL 和 Redis…美团2面如何保障 MySQL 和 Redis 的数据一致性
说在前面
在尼恩的50读者社群中经常遇到一个 非常、非常高频的一个面试题但是很不好回答类似如下 如何保障 MySQL 和 Redis 的数据一致性如何保障 MySQL 和 Cache 的数据一致性 最近有个小伙伴美团2面又遇到了这个问题。
这里尼恩基于自己的《Java高并发核心编程 卷3加强版》注意是加强版以及自己的 3高架构知识体系3高架构宇宙给大家梳理一个科书式的答案。
通过此答案使得大家可以充分展示一下大家雄厚的 “技术肌肉”让面试官爱到 “不能自已、口水直流”。也一并把题目以及参考答案收入咱们的《尼恩Java面试宝典》 V55供后面的小伙伴参考提升大家的 3高 架构、设计、开发水平。 注本文以 PDF 持续更新最新尼恩 架构笔记、面试题 的PDF文件请从这里获取码云 首先什么是Cache-Aside Pattern旁路缓存模式
Cache-Aside Pattern旁路缓存模式又叫旁路路由策略在这种模式中读取缓存、读取数据库和更新缓存的操作都是在应用程序中完成。此模式是业务系统最常用的缓存策略。
旁路缓存又模式分为读缓存和写缓存。
旁路缓存模式在读的时候先读缓存缓存命中的话直接返回数据如果缓存没有命中的话就去读数据库从数据库取出数据放入缓存后同时返回响应。
Cache-Aside Pattern旁路缓存模式读操作流程具体如下
step 1应用程序接收用户的数据查询的请求
step 2应用程序优先从缓存查找数据
step 3如果存在cache hit从缓存上查询出来返回查询到数据
Step 4如果不存在cache miss从数据库中查询数据并存入缓存中返回查询到数据。
Cache-Aside Pattern旁路缓存模式读操作流程具体如下图所示 图Cache-Aside Pattern旁路缓存模式读操作流程
Cache-Aside Pattern旁路缓存模式写操作流程具体如下
step 1接收用户的数据写入的请求
step 2先写入数据库
step 3再写入缓存。
Cache-Aside Pattern旁路缓存模式写操作流程具体如下图所示 图Cache-Aside Pattern旁路缓存模式写操作流程
数据什么时候从数据库如Mysql集群加载到缓存如Redis集群呢有以下两种加载模式可被选择懒汉模式、饿汉模式。懒汉模式、饿汉模式可以理解为及时加载模式、延迟加载模式。
所谓懒汉模式就会在使用时临时加载缓存。具体来说就是当需要使用数据时就从数据库中把它查询出来然后写入缓存。第一次查询之后后续的请求都能从缓存中查询到数据。
所谓饿汉模式就是提前预加载缓存。具体来说在项目启动的时候预加载数据到缓存。当需要使用数据时能直接从缓存获取数据而不需要从数据获取。
饿汉模式提前预加载数据到缓存的时机能极大地提升请求处理的性能力极大地提升系统的吞吐量。此模式适合于缓存那些不是经常变更的数据例如商品类目数据或者那些访问非常频繁的极热数据例如秒杀商品数据。 说 明 懒汉模式、饿汉模式这组名词来自于Java的单例模式关于Java的单例模式的详细介绍请参考《Java高并发核心编程 卷2加强版》 注意是加强版。 Cache-Aside如何保证双写的数据一致性
Cache-Aside是日常开发中使用最多的缓存层高并发访问模式。所以面试官也喜欢围绕这种模式进行发问。一个非常高频的问题是Cache-Aside在写入的时候为什么是删除缓存而不是更新缓存呢。而且很多大厂也喜欢问这个领域的问题下面就是一道来自于社群的美团真题。
美团面试题
Cache-Aside如何保证DB和Cache双写的数据一致性
要完美的回答这个问题咱们把Cache-Aside模式旁路缓存模式下的DB和Cache双写的策略做一个系统化的梳理大概分为如下五大策略。
