美文网首页
缓存的一致性

缓存的一致性

作者: 杰森斯坦sen | 来源:发表于2019-06-27 23:57 被阅读0次

最终一致性

给缓存设置过期时间,是保证最终一致性的解决方案。

场景:更新缓存呢,还是删除缓存?

Cache Aside Pattern:
读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。
写的时候,先更新数据库,然后再删除缓存。( lazy 计算)

删缓存失败:

  • 缓存设置过期时间(缓存过期时间设为随机值减少发生缓存雪崩的可能性)
  • 消息队列重试,有业务代码侵入的问题
  • 订阅数据库的binlog

场景:先删除缓存,再更新数据库?

  • 高并发下会发生不一致。
  • 数据库主从延时会发生不一致。

简单的方法:延时双删策略,第二次删除做成异步的

高并发:更新数据的时候,根据数据的唯一标识,将操作路由之后,发送到一个内存队列中。
读取数据的时候,如果发现数据不在缓存中,那么将重新读取数据+更新缓存的操作,根据唯一标识路由之后,也发送同一个内存队列。

Design Pattern

  • Cache Aside Pattern
  • Read Through
  • Write Through
  • Write Back
Read/Write Through Read/Write Through

Read/Write Through是把更新数据库的操作由缓存自己代理了,对于应用层来说,认为后端就是一个单一的存储,而存储自己维护自己的Cache。

Reference

分布式之数据库和缓存双写一致性方案解析
缓存更新的套路
知乎已读服务的前生今世与未来

相关文章

  • JVM-003-MESI

    MESI 一、缓存一致性协议   缓存一致性协议有很多,不同的厂商使用的缓存一致性协议是不同的,其中intel使用...

  • 内存模型和原子操作笔记

    1. 缓存一致性协议 缓存一致性协议MESI可以保证,在所有的脏缓存段被回写后,任意缓存级别的所有缓存段中的内容,...

  • 缓存一致性协议

    锁缓存行有一套协议叫做缓存一致性协议。缓存一致性协议有MSI、MESI、MOSI、Synapse、Firefly以...

  • 缓存的一致性

    最终一致性 给缓存设置过期时间,是保证最终一致性的解决方案。 场景:更新缓存呢,还是删除缓存? Cache Asi...

  • 先更新缓存还是先更新数据库

    项目中缓存基本上成为了标配,本地缓存也好、内存数据库缓存也好,只要用了缓存就会涉及数据一致性的问题,这个一致性指的...

  • 88,分布式数据同步一致性方案-mysql与缓存双写一致

    1 缓存一致性协议产生的背景 2,多级缓存框架设计方案 3,Mysql与redis缓存一致性原理mysql 与re...

  • java多线程-3-volatile

    缓存一致性问题 起因:高速缓存 方案总线LOCK#锁,释放锁前该块内存无法被别的cpu或线程访问缓存一致性协议(I...

  • 02章 并发基础

    CPU多级缓存 - 缓存一致性 用于保证多个CPU cache之间缓存共享数据的一致 CPU多级缓存 - 乱序执行...

  • 缓存

    1 缓存基础 1 缓存的读写模式 1.1 Cache Aside(旁路缓存) 适合场景数据一致性要求高,缓存数据更...

  • 第一章-并发基础

    cpu多级缓存- 缓存一致性 cpu多级缓存- 乱序执行优化 JAVA内存模型【java Memory Model...

网友评论

      本文标题:缓存的一致性

      本文链接:https://www.haomeiwen.com/subject/shzdcctx.html