当前位置: 首页 > news >正文

缓存更新策略

有两种策略

1.先删除缓存,再操作数据库(有缺点)

正常:线程1先删除缓存,然后线程1更新数据库

异常情况:线程1删除缓存之后,再线程1更新数据库之前,线程2查询缓存,因为缓存已经被删除,未命中,然后查询数据库,写入缓存。之后线程1执行了更新数据库的操作,此时发生了数据库与缓存不一致问题、

发生情况:高 因为查询数据库是比较慢的

2.先操作数据库,再删除缓存。

正常:线程1查询缓存,未命中,查询数据库,然后写入缓存

异常情况:线程1查询缓存,未命中,查询数据库,此时线程2进行了更新数据库的操作,然后把缓存删除,然后线程1写入缓存。此时发生了数据库与缓存不一致问题

发生情况:低 因为 查询缓存之后写入缓存是毫秒级别,数据库查询很慢,发生情况很低

1. 低一致性需求:使用Redis自带的内存淘汰机制

生活化类比:

像图书馆书架满了,按“最近最少借阅”自动下架旧书,腾出空间放新书。不需要手动管理,系统自动淘汰。

专业解释:

Redis 内存满时,按配置策略(如 LRU)自动淘汰旧数据。适合对实时性要求不高的场景,如热点数据、统计数据。


2. 高一致性需求:主动更新 + 超时剔除

生活化类比:

像银行账户余额,必须准确。查询时先看“小本子”(缓存),有就直接用;没有就去查“总账”(数据库),查到后记到“小本子”并标注过期时间。更新时先改“总账”,再撕掉“小本子”上旧记录,保证两个操作同时完成。

专业解释:

读操作(Cache-Aside):

  • 缓存命中:直接返回缓存数据
  • 缓存未命中:查数据库,写入缓存并设置过期时间(TTL)

写操作(Write-Through/Write-Behind):

  • 先写数据库,再删除缓存(避免先删缓存再写库导致短暂不一致)
  • 保证数据库写与缓存删除的原子性(事务或分布式锁),确保一致性

核心要点:

  • 低一致性:依赖自动淘汰,简单但可能读到旧数据
  • 高一致性:主动更新 + 超时兜底,保证准确性,但实现更复杂

http://www.dtcms.com/a/594009.html

相关文章:

  • 网站海外推广方案品牌策划公司的市场
  • 大潮建设集团有限公司 网站h5的制作步骤
  • 河中跳房子(信息学奥赛一本通- P1247)
  • Julia 日期和时间
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P07-11 实现自动运行
  • 培训人员网站建设龙岗网站开发公司
  • 【经验分享】Genio 520/Genio720未使用引脚处理方法
  • 重庆免费网站建站模板微网站趋势
  • DDR5引领变革:内存条行业的技术迭代与市场重构
  • 一小时速通Pytorch之Tensor张量(一)
  • 怎么做网站教程 用的工具提供网站推广公司电话
  • 网站服务内容怎么写wordpress 响应时间
  • 主成分分析(Principal Component Analysis,PCA)的个人理解
  • sqlite数据库迁移至mysql
  • PostgreSQL 高并发优化:从 “连接数满到崩” 到 “支撑 10 万 QPS” 的实战技巧
  • 怎么免费建自己的网站网络营销课程培训机构
  • 团队开发者git仓库工作手册
  • 欧美风网站建设seo品牌优化整站优化
  • 2.8 模型压缩与优化技术
  • 数字孪生工厂浪潮来袭,众趣科技以实景智能筑牢智造基石
  • [設計模式]二十三種設計模式
  • 有视频接口怎么做网站哪个行业最需要做网站
  • 解锁AI工作流的终极密码:Semantic Kernel Process框架深度技术解析
  • 从0到1:Makefile自动化编译实战全解析
  • 广州网站推广教程中国建设银行网站会员用户名
  • 怎么做分享软件的网站php网站开发框架搭建
  • 网站跟网页的区别jsp做的网页是网站吗
  • 根据docker服务保存日志脚本,时间可选版本
  • 九、神经网络的构建方式详解
  • 第五章 神经网络