突破Java面试(27)-如何保证缓存与数据库的数据一致性
1 面试题
如何保证缓存与数据库的双写一致性?
2 考点分析
你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?
3 详解
一般来说,就是如果你的系统不是严格要求缓存+数据库必须一致性的话,缓存可以稍微的跟数据库偶尔有不一致的情况,最好不要做这个方案
读请求和写请求串行化,串到一个内存队列里去,这样就可以保证一定不会出现不一致的情况
串行化之后,就会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。
3.1 Cache Aside Pattern缓存+数据库读写模式的分析
最经典的缓存+数据库读写的模式 cache aside pattern
3.1.1 Cache Aside Pattern
(1)读的时候,先读缓存,缓存没有的话,就读数据库,然后取出