缓存一致性

  • java
  • redis
  • 缓存

  • ❎先更数据库,再更缓存
  • ❎先更缓存,再更数据库
  • ❎先删缓存,再更数据库
  • ✔️先更数据库,再删缓存: 理论上这种情况是会出现缓存不一致的情况,但是在实际中发生的概率很低。因为数据库操作远比缓存操作要慢,除非是写缓存的服务gc时停顿的时间比较长,导致比数据库操作慢。

可能会出现缓存不一致:a、b两个线程,a先读数据库数据,b更新数据库,a把旧数据写回到缓存

  • ✔️延迟双删(应该是最保险的),先删缓存,然后更新数据库,最后等一会,再删缓存
  • 单独写个程序订阅mysql binglog,有数据变更时,删除对应的缓存
Loading...