原文写的很好:
高并发下先操作数据库还是先操作缓存
最终决定的方案如下
在分布式系统中,缓存和数据库同时存在时,如果有写操作的时候,先操作数据库,再操作缓存。
-
(1)读取缓存中是否有相关数据
-
(2)如果缓存中有相关数据value,则返回
-
(3)如果缓存中没有相关数据,则从数据库读取相关数据放入缓存中key->value,再返回
-
(4)如果有更新数据,则先更新数据,再删除缓存
-
(5)为了保证第四步删除缓存成功,使用binlog异步删除
-
(6)如果是主从数据库,binglog取自于从库
-
(7)如果是一主多从,每个从库都要采集binlog,然后消费端收到最后一台binlog数据才删除缓存