缓存和数据库一致性问题

1缓存更新的套路

常见的缓存更新套路就是旁路更新
操作如下:
读:先读缓存,读不到就取DB读,然后将读到的值写到缓存。
写:直接写DB,然后再写缓存,或者淘汰缓存
其中的读写并发会导致缓存不一致。
1.1双写更新问题


1.PNG

双写更新问题本质是多线程并发写造成。
1.2淘汰更新问题


2.PNG

淘汰更新问题本质上是淘汰缓存线程跟写缓存线程并发造成。

2解决方法

并发带来的问题我们解决的思路有如下几种:
*1.消息队列法。
将所有的写请求(淘汰缓存操作、写缓存操作)写到消息队列,单线程消费者消费这些请求写入到缓存中,把并发操作给串行化。
*2.分布式锁。
所有要进行写缓存、淘汰缓存的操作,都要先获取分布式锁,

你可能感兴趣的:(缓存和数据库一致性问题)