假设采用的主从结构的、读写分离的数据库。
如果一个线程A先删除缓存数据,然后将数据写入到主库中,这个时候,主库和从库同步没有完成,线程B从缓存当中读取数据失败,从从库当中读取到旧数据,然后更新至缓存,这个时候,缓存当中的就是旧的数据。
发生上述不一致的原因在于:主从库数据不一致问题,加入了缓存之后,主从不一致的时间被拉长了。
处理思路:在从库有数据更新之后,将缓存当中的数据也同时进行更新,即当从库发生了数据更新之后,向缓存发出删除,淘汰这段时间写入的旧数据。
场景描述:对于主从库,读写分离,如果主从库更新同步有时差,就会导致主从数据库的不一致。
处理思路:
1、Master最好不要做持久化工作,如RDB内存快照和AOF日志文件。
2、如果数据比较重要,某个Slave开启AOF备份,策略设置成每秒同步一次。
3、尽量避免在压力大的主库上增加从库。
4、主从复制不要采取网状结构,尽量是线性结构,Master <— Slave1 <— Slave2等等。