|NO.Z.00049|——————————|BigDataEnd|——|Hadoop&Redis.V02|——|Redis.v02|数据不一致|
一、数据不一致
### --- 数据不一致
~~~ 缓存和DB的数据不一致的根源 : 数据源不一样
### --- 如何解决
~~~ 强一致性很难,追求最终一致性(时间)
~~~ 互联网业务数据处理的特点
~~~ 高吞吐量
~~~ 低延迟
~~~ 数据敏感性低于金融业
~~~ 时序控制是否可行?
~~~ 先更新数据库再更新缓存或者先更新缓存再更新数据库
~~~ 本质上不是一个原子操作,所以时序控制不可行
~~~ 高并发情况下会产生不一致
### --- 保证数据的最终一致性(延时双删)
~~~ 先更新数据库同时删除缓存项(key),等读的时候再填充缓存
~~~ 2秒后再删除一次缓存项(key)
~~~ 设置缓存过期时间 Expired Time 比如 10秒 或1小时
~~~ 将缓存删除失败记录到日志中,利用脚本提取失败记录再次删除(缓存失效期过长 7*24)
### --- 升级方案
~~~ 通过数据库的binlog来异步淘汰key,利用工具(canal)将binlog日志采集发送到MQ中,
~~~ 然后通过ACK机制确认处理删除缓存。
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv012-redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」