文章目录

  • ①. 缓存和数据库双写一致保证
  • ②. 缓存数据一致性-解决方案
  • ③. 缓存数据一致性-解决-Canal

①. 缓存和数据库双写一致保证

  • ①. 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题

  • ②. 那么,如何解决一致性问题?提供两种解决方案:双写模式、失效模式
    (下面将介绍这两种模式以及带来的问题)

  • ③. 双写模式:写数据库后,写缓存
    问题:并发时,2写进入,写完DB后都写缓存,这个时候本来缓存最新应该是2的,这样就导致了缓存最新是1

  • ④. 失效模式:写完数据库后,删缓存

  1. 问题:还没存入数据库呢,线程3又读到旧的DB1的数据,本来最新应该是db-2的
  2. 解决方式一:缓存设置过期时间,定期更新
  3. 解决方式二:写数据写时,加分布式的读写锁。

②. 缓存数据一致性-解决方案

  • ①. 无论是双写模式还是失效模式,都会导致缓存的不一致问题。即多个实例同时更新会出事。怎么办?
  1. 如果是用户纬度数据(订单数据、用户数据),这种并发几率非常小,不用考虑这个问题,缓存数据加上过期时间,每隔一段时间触发读的主动更新即可
  2. 如果是菜单,商品介绍等基础数据,也可以去使用canal订阅binlog的方式
  3. 缓存数据+过期时间也足够解决大部分业务对于缓存的要求
  4. 通过加锁保证并发读写,写写的时候按顺序排好队。读读无所谓。所以适合使用读写锁。(业务不关心 脏数据,允许临时脏数据可忽略)
  • ②. 我们能放入缓存的数据本就不应该是实时性、一致性要求超高的。所以缓存数据的时候加上过期时间,保 证每天拿到当前最新数据即可

  • ③. 遇到实时性、一致性要求高的数据,就应该查数据库,即使慢点

③. 缓存数据一致性-解决-Canal

  • ①. 使用Canal更新缓存
  • ②. 比如我们在淘宝页面看到你最近浏览了什么页面,那么下次你登录淘宝的时候,会将你之前浏览的推荐给你

REDIS11_缓存和数据库一致性如何保证、解决方案、提供Canel解决数据一致性问题相关推荐

  1. Redis 缓存实战——缓存、数据库一致性问题分析与解决方案

    引言 缓存与数据库一致性的问题自从出现了缓存概念后就一直被提及,它是一个缓存方案的先天缺陷,只要存在缓存,就势必会讨论缓存与数据库一致性的问题. 一致性问题还广泛存在于各种分布式存储场景中,如主从一致 ...

  2. 如何保证缓存和数据库一致性?

    如何保证缓存和数据库一致性? 引入缓存提高性能 缓存利用率和一致性问题 并发引起的一致性问题 删除缓存可以保证一致性吗? 如何保证两步都执行? 主从延迟和延迟双删问题 可以做到强一致性吗? 总结 如何 ...

  3. 缓存与数据库一致性保证

    缓存与数据库一致性保证 本文主要讨论这么几个问题: (1)啥时候数据库和缓存中的数据会不一致 (2)不一致优化思路 (3)如何保证数据库与缓存的一致性 一.需求缘起 上一篇<缓存架构设计细节二三 ...

  4. 好文推荐 | 缓存与数据库一致性问题深度剖析 (修订)

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 来源:后端技术漫谈 当我们在做数据库与缓存数据同步时,究竟更新缓存,还是删 ...

  5. 缓存和数据库一致性问题,看这篇就够了

    作者 | Magic Kaito 来源 | 水滴与银弹 如何保证缓存和数据库一致性,这是一个老生常谈的话题了. 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存? 到底选择先更新数据库, ...

  6. 【Redis】--缓存双写一致性分析、解决方案

    目录 一.缓存双写一致性场景 1.先更新数据库,再更新缓存 2.先更新数据库,再删除缓存 2.1.存在的问题一:删除缓存失败,导致Redis和mysql的数据不一致. 2.2.存在的问题二:删除缓存成 ...

  7. 缓存和数据库一致性问题

    文章目录 1. 缓存和数据库一致性问题 2. 三个经典的缓存模式 2.1 Cache-Aside 2.1.1 读缓存 2.1.2 写缓存 2.1.3 延迟双删 2.1.4 如何确保操作缓存和操作数据库 ...

  8. 高并发下缓存与数据库双写不一致解决方案

    高并发下缓存与数据库双写不一致解决方案 参考文章: (1)高并发下缓存与数据库双写不一致解决方案 (2)https://www.cnblogs.com/wlwl/p/11601632.html (3) ...

  9. 怎么保证缓存和数据库一致性

    背景 缓存是软件开发中一个非常有用的概念,数据库缓存更是在项目中必然会遇到的场景.而缓存一致性的保证,更是在面试中被反复问到,这里进行一下总结,针对不同的要求,选择恰到好处的一致性方案. 缓存是什么 ...

最新文章

  1. 代码生成codegen
  2. CentOS 迎来更新换代版本 CentOS Stream 9 附下载镜像OS地址
  3. Java修改全文数字,求大神帮我修改下java计算机代码,数字键只有0和8能用
  4. 阅读开源源码的正确姿势建议
  5. 深度拷贝 java_Java深度拷贝方式和性能对比
  6. Memory及其controller芯片整体测试方案(上篇)
  7. 用jar 命令打包war包
  8. 为什么清华、北大、麻省理工硕博士,都要逐步推导机器学习算法?
  9. CSS overflow属性与display属性
  10. MyEclipse插件不能安装原因
  11. html服装商品分类页面,商品分类.html
  12. python爬取晋江小说排行榜_【含代码】Python爬虫实战:爬取全站小说排行榜
  13. input onfocus onblur
  14. 墨者 SQL手工注入漏洞测试(MySQL数据库)
  15. mysql可以存储拼音吗_MySQL汉字变换拼音(存储函数)
  16. SAP 移动平均价和标准价详细解析
  17. 在html中写响应式布局的代码,CSS实现响应式布局的方法
  18. Reids简直存储,key以“\xAC\xED\x00\x05t\x00“开头
  19. FastCGI sent in stderr: PHP message: PHP Fatal error: Call to undefined function __() in
  20. 基于Matlab的汽车主动悬架控制器设计与仿真

热门文章

  1. 电力监控仪表主要分类
  2. 计算机网络,数据库,操作系统杂乱汇总(1),处女座慎入,笔记而已
  3. hdu 3887 Counting Offspring
  4. 机器学习习题(18)
  5. 抖音上python_用Python生成抖音字符视频!
  6. 理论力学818 复习资料
  7. 高考英语口试计算机,重庆高考英语口试怎么考
  8. metaio AR技术--android,iphone,wphone
  9. 联想z485在ubuntu13.04系统下发热量大的解决办法
  10. Brian2学习教程——Intro to Brian part 1: Neurons