Java并发环境下,先操作数据库还是先操作缓存?

时间:2019-09-10 来源:www.rtvwonline.com

dafa888

专注,不要迷路;不断更新Java相关技术和信息!

公共号码:Java修炼者(在生活更新中)

前言

在分布式系统中,当缓存和数据库同时存在时,如果有写操作,您是先操作数据库还是先操作缓存?首先考虑一下,可能存在哪些问题,然后向下看。下面我将详细介绍几种情况。

缓存维护计划一

假设有一个写(线程A)读(线程B)操作,先操作缓存,在操作数据库。如以下流程图所示:

缓存维护摘要

总之,在分布式系统中,当缓存和数据库同时存在时,如果存在写操作,则为先操作数据库,再操作缓存。如下:

(1)读缓存中是否有相关数据

(2)如果缓存中有相关数据值,则返回

(3)如果缓存中没有相关数据,则从数据库中读取相关数据并将其放入缓存key->值,然后返回

(4)如果有更新数据,首先更新数据,然后删除缓存

(5)为了确保成功删除缓存的第四步,使用binlog异步删除

(6)如果是主从数据库,则从库中获取binglog

(7)如果它是主服务器和从服务器,则每个从属库必须收集binlog,然后消费者接收最后的binlog数据以删除缓存

为了感谢你的关注,送你一份我精心准备的资料。关注私信回复:555领取一份Java高级架构资料、Spring源码分析、Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式等资料

欢迎大家关注,大家一起学习,一起讨论。