redis缓存相关-并发问题发现和解决

2021-10-28  本文已影响0人  Raral

redis 缓存相关

基本缓存系统流程图

redis缓存流程图.png

分析缓存的过程

  1. 由于引入缓存,那么更新时,不仅要更新数据库,而且要更新缓存,这两个更新操作存在前后的问题:
  1. 分析缓存和数据库不一致现象


    数据库和缓存不一致.png
  1. 先更新缓存,再更新数据库;也会出现数据不一致现象
    同理:
    请求A先更新缓存为1;同时,请求B更新缓存为2,然后更新数据库为2;
    最后请求A更数据库位1;
    这样当前缓存数据2,数据库数据为1;

所以,无论是「先更新数据库,再更新缓存」,还是「先更新缓存,再更新数据库」,这两个方案都存在并发问题,当两个请求并发更新同一条数据的时候,可能会出现缓存和数据库中的数据不一致的现象。

解决缓存和数据库数据不一致

通过思考,在更新数据时,不更新缓存,而是删除缓存数据,然后读取数据时候,发现缓存没了命中数据之后,在从数据库读取数据,更新到缓存中
分析图:

读写策略.png
  1. 写策略步骤:
  1. 读策略的步骤:

在想到「写策略」的时候,又陷入更深层次的思考,到底该选择哪种顺序呢

先删除缓存,再更新数据库;
先更新数据库,再删除缓存。
用并发的角度来分析,看看这两种方案哪个可以保证数据库与缓存的数据一致性。
敬请期待

上一篇 下一篇

猜你喜欢

热点阅读