如何使用缓存 | 数据一致性
三种常见更新策略
- LRU/LRF/FIFO算法剔除 (Redis使用maxmemory-policy这个配置作为内存最大值后对于数据的剔除策略)
- 超时剔除
- 主动更新
使用建议:
- 低一致性的业务配置最大内存和淘汰策略的方式
- 高一致性的业务结合超时剔除和主动更新
数据库与缓存的一致性
1、推荐方式 - 先更新数据库,再删除缓存
出现脏数据的情况:
a.查询数据
b.缓存不存在
c.提交更新事务
d.删除缓存
e.回填缓存
后续读到的都是a步骤查询出来的脏数据,但是出现这种情况的条件要比下面的方式严苛得多。
2、如果是先删除缓存,那么会出现这种情况
在对缓存删除完之后(这时数据还没有更新),有一个读请求,这个时候由于缓存被删除所以直接会读库,读操作的数据是老的并且会被加载进入缓存当中,后续读请求全部访问的老数据。
3、缓存删除失败
如果缓存删除失败,缓存的数据就会和数据库的数据不一致,那么我们就只能靠过期超时来进行兜底。对此我们可以进行优化,如果删除失败的话 我们不能影响主流程那么我们可以将其放入队列后续进行异步删除。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类