REDIS11_缓存和数据库一致性如何保证、解决方案、提供Canel解决数据一致性问题
文章目录
- ①. 缓存和数据库双写一致保证
- ②. 缓存数据一致性-解决方案
- ③. 缓存数据一致性-解决-Canal
①. 缓存和数据库双写一致保证
①. 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题
②. 那么,如何解决一致性问题?提供两种解决方案:双写模式、失效模式
(下面将介绍这两种模式以及带来的问题)③. 双写模式:写数据库后,写缓存
问题:并发时,2写进入,写完DB后都写缓存,这个时候本来缓存最新应该是2的,这样就导致了缓存最新是1
④. 失效模式:写完数据库后,删缓存
- 问题:还没存入数据库呢,线程3又读到旧的DB1的数据,本来最新应该是db-2的
- 解决方式一:缓存设置过期时间,定期更新
- 解决方式二:写数据写时,加分布式的读写锁。
②. 缓存数据一致性-解决方案
- ①. 无论是双写模式还是失效模式,都会导致缓存的不一致问题。即多个实例同时更新会出事。怎么办?
- 如果是用户纬度数据(订单数据、用户数据),这种并发几率非常小,不用考虑这个问题,缓存数据加上过期时间,每隔一段时间触发读的主动更新即可
- 如果是菜单,商品介绍等基础数据,也可以去使用canal订阅binlog的方式
- 缓存数据+过期时间也足够解决大部分业务对于缓存的要求
- 通过加锁保证并发读写,写写的时候按顺序排好队。读读无所谓。所以适合使用读写锁。(业务不关心 脏数据,允许临时脏数据可忽略)
②. 我们能放入缓存的数据本就不应该是实时性、一致性要求超高的。所以缓存数据的时候加上过期时间,保 证每天拿到当前最新数据即可
③. 遇到实时性、一致性要求高的数据,就应该查数据库,即使慢点
③. 缓存数据一致性-解决-Canal
- ①. 使用Canal更新缓存
- ②. 比如我们在淘宝页面看到你最近浏览了什么页面,那么下次你登录淘宝的时候,会将你之前浏览的推荐给你
REDIS11_缓存和数据库一致性如何保证、解决方案、提供Canel解决数据一致性问题相关推荐
- Redis 缓存实战——缓存、数据库一致性问题分析与解决方案
引言 缓存与数据库一致性的问题自从出现了缓存概念后就一直被提及,它是一个缓存方案的先天缺陷,只要存在缓存,就势必会讨论缓存与数据库一致性的问题. 一致性问题还广泛存在于各种分布式存储场景中,如主从一致 ...
- 如何保证缓存和数据库一致性?
如何保证缓存和数据库一致性? 引入缓存提高性能 缓存利用率和一致性问题 并发引起的一致性问题 删除缓存可以保证一致性吗? 如何保证两步都执行? 主从延迟和延迟双删问题 可以做到强一致性吗? 总结 如何 ...
- 缓存与数据库一致性保证
缓存与数据库一致性保证 本文主要讨论这么几个问题: (1)啥时候数据库和缓存中的数据会不一致 (2)不一致优化思路 (3)如何保证数据库与缓存的一致性 一.需求缘起 上一篇<缓存架构设计细节二三 ...
- 好文推荐 | 缓存与数据库一致性问题深度剖析 (修订)
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:后端技术漫谈 当我们在做数据库与缓存数据同步时,究竟更新缓存,还是删 ...
- 缓存和数据库一致性问题,看这篇就够了
作者 | Magic Kaito 来源 | 水滴与银弹 如何保证缓存和数据库一致性,这是一个老生常谈的话题了. 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存? 到底选择先更新数据库, ...
- 【Redis】--缓存双写一致性分析、解决方案
目录 一.缓存双写一致性场景 1.先更新数据库,再更新缓存 2.先更新数据库,再删除缓存 2.1.存在的问题一:删除缓存失败,导致Redis和mysql的数据不一致. 2.2.存在的问题二:删除缓存成 ...
- 缓存和数据库一致性问题
文章目录 1. 缓存和数据库一致性问题 2. 三个经典的缓存模式 2.1 Cache-Aside 2.1.1 读缓存 2.1.2 写缓存 2.1.3 延迟双删 2.1.4 如何确保操作缓存和操作数据库 ...
- 高并发下缓存与数据库双写不一致解决方案
高并发下缓存与数据库双写不一致解决方案 参考文章: (1)高并发下缓存与数据库双写不一致解决方案 (2)https://www.cnblogs.com/wlwl/p/11601632.html (3) ...
- 怎么保证缓存和数据库一致性
背景 缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景.而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案. 缓存是什么 ...
最新文章
- 代码生成codegen
- CentOS 迎来更新换代版本 CentOS Stream 9 附下载镜像OS地址
- Java修改全文数字,求大神帮我修改下java计算机代码,数字键只有0和8能用
- 阅读开源源码的正确姿势建议
- 深度拷贝 java_Java深度拷贝方式和性能对比
- Memory及其controller芯片整体测试方案(上篇)
- 用jar 命令打包war包
- 为什么清华、北大、麻省理工硕博士,都要逐步推导机器学习算法?
- CSS overflow属性与display属性
- MyEclipse插件不能安装原因
- html服装商品分类页面,商品分类.html
- python爬取晋江小说排行榜_【含代码】Python爬虫实战:爬取全站小说排行榜
- input onfocus onblur
- 墨者 SQL手工注入漏洞测试(MySQL数据库)
- mysql可以存储拼音吗_MySQL汉字变换拼音(存储函数)
- SAP 移动平均价和标准价详细解析
- 在html中写响应式布局的代码,CSS实现响应式布局的方法
- Reids简直存储,key以“\xAC\xED\x00\x05t\x00“开头
- FastCGI sent in stderr: PHP message: PHP Fatal error: Call to undefined function __() in
- 基于Matlab的汽车主动悬架控制器设计与仿真
热门文章
- 电力监控仪表主要分类
- 计算机网络,数据库,操作系统杂乱汇总(1),处女座慎入,笔记而已
- hdu 3887 Counting Offspring
- 机器学习习题(18)
- 抖音上python_用Python生成抖音字符视频!
- 理论力学818 复习资料
- 高考英语口试计算机,重庆高考英语口试怎么考
- metaio AR技术--android,iphone,wphone
- 联想z485在ubuntu13.04系统下发热量大的解决办法
- Brian2学习教程——Intro to Brian part 1: Neurons