blog:cache:consistency-question

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
blog:cache:consistency-question [2022/04/28 11:16]
okami
blog:cache:consistency-question [2022/04/28 11:54] (当前版本)
okami [问题的产生]
行 7: 行 7:
 - 最终一致性 - 最终一致性
  
-====== 问题的生 ======+====== 一致性问题描述 ====== 
 + 
 + 
 +- 先更新数据库,再删除缓存 
 +  - 更新数据库成功,删除缓存失败。导致业务一直读取到错误值 
 +- 先删除缓存,再更新数据库 
 +  - 删除缓存成功,但是在更新成功数据库之前,有新的请求获取缓存值。发缓存缺失。这个时候读取到数据库中的旧值存放在缓存中。 
 + 
 +===== 新增 ===== 
 + 
 +- 业务服务将数据写入数据库,不写缓存。当需要读取记录的时候,缓存缺失。将数据库中的值缓存到缓存系统。这个时候不存在一致性问题 
 + 
 +===== 删改 ===== 
 + 
 +- 如果发生删改操作,应用既要更新数据库,也要在缓存中删除数据。这两个操作如果无法保证原子性,也就是说,要不都完成,要不都没完成,此时,就会出现数据不一致问题了 
 + 
 +====== 问题解决方案 ====== 
 + 
 +===== 重试机制 ===== 
 + 
 +- 可以把要删除的缓存值或者是要更新的数据库值暂存到消息队列中(例如使用 Kafka 消息队列)。当应用没有能够成功地删除缓存值或者是更新数据库值时,可以从消息队列中重新读取这些值,然后再次进行删除或更新。 
 + 
 +===== 延时双删 ===== 
 + 
 +====读写锁 =====
  
-- 更新记录 
  
  
  • blog/cache/consistency-question.txt
  • 最后更改: 2022/04/28 11:54
  • okami