IT评测·应用市场-qidao123.com技术社区

标题: 【Redis进阶】缓存一致性问题 [打印本页]

作者: 怀念夏天    时间: 2024-9-5 06:25
标题: 【Redis进阶】缓存一致性问题
目次
缓存一致性问题概念
缓存一致性问题的成因
缓存一致性问题的解决方案
旁路设计模式中同步删除
焦点流程
存在问题 
耽误双删(口试常问)
焦点流程
耽误双删策略重要分为以下几个步调:
 耽误双删的应用场景
长处:
缺点:
监听binlog删除+重试(常用)
焦点流程
监听 Binlog 并删除缓存的流程
长处:
缺点:


缓存一致性问题概念

缓存一致性问题指的是缓存中的数据和数据库中的数据不一致的情况,这在分布式系统中尤其常见。缓存一致性问题可能导致用户读取到旧数据或者错误数据,从而影响系统的可靠性和用户体验.
缓存一致性问题的成因

缓存一致性问题的解决方案

旁路设计模式中同步删除

焦点流程


存在问题 

如图所示,更新请求进来,先更新数据,再删除缓存。但是会导致以下问题
写线程A读线程B
删除缓存
读取缓存,未命中,查询数据S1
更新请求进来,更新数据库S1->S2
删除缓存
将S1放入缓存
在上图所示:

耽误双删(口试常问)

焦点流程


耽误双删策略重要分为以下几个步调:

  1. //延迟双删伪代码
  2.    public void updateData(String key, String newValue) {
  3.     // 1. 更新数据库中的数据
  4.     db.update(key, newValue);
  5.     // 2. 删除缓存中的旧数据
  6.     redis.del(key);
  7.     // 3. 延迟一段时间
  8.     try {
  9.         Thread.sleep(500); // 延迟500毫秒
  10.     } catch (InterruptedException e) {
  11.         e.printStackTrace();
  12.     }
  13.     // 4. 再次删除缓存(以防止并发问题)
  14.     redis.del(key);
  15. }
复制代码
 耽误双删的应用场景


长处

缺点

监听binlog删除+重试(常用)

焦点流程


监听 Binlog 并删除缓存的流程

长处

缺点

缓存一致性问题是分布式系统中的一个复杂问题,需要根据详细的业务需求和场景选择符合的解决方案。通过公道的缓存策略和一致性保证,可以有用提高系统的性能和可靠性。

 
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4