架构师之路 操作缓存还是先操作数据库

缓存能够提高读取速度,但操作不好也会带来一些弊端,在业务中使用缓存时操作顺序如何 ,如何确保业务读到正确的数据呢。在这篇文章中主要讲解一下先是操作数据库还是先操作缓存。

读不会改变数据,一般都是先读缓存在读数据库

对于写请求有两种情况。

第一种:先操作缓存,在操作数据库

 对于写请求(以数据库操作成功为准 来判断写是否成功),

(1) 先操作缓存(delete 或者set),

(2)操作数据库,在操作数据库阶段,

 若第一步成功,第二步失败。这里又分两种情况:

   若在(1)中使用set 则会导致缓存中数据 与数据库中不一致。

   若在(1)中使用delete则只会导致缓存没有该数据,数据并不会出现不一致,只是下次读取该数据时会重新在缓存中存取

若第一步失败,可以直接返回50X(服务器端错误),则没有后续操作,即数据也会一致

第二种 : 

(1)先操作数据库,

(2)接着操作缓存(set或者delete)

若第一步失败,则直接返回50X(服务器端错误), 没有后续操作,则数据一致。

若第一步成功,第二步失败,数据库中数据已经更新,第二步失败后不管操作缓存是用set还是delete操作,缓存操作失败,导致缓存数据与数据库中数据不一致,从而造成业务读取脏数据


综上所诉,在业务进行写操作时,因该先操作缓存(选用delete方法,虽然会造成缓存miss但不影响数据一致性)

 在操作数据库。

猜你喜欢

转载自blog.csdn.net/qq_32459653/article/details/80980447