写点什么

在使用缓存时应该注意哪些问题?

  • 2015-09-21
  • 本文字数:882 字

    阅读完需:约 3 分钟

缓存是个好工具。许多有用的数据都适合放在内存中。那样可以降低延迟,减轻数据库负载,减少硬件成本。但实际上,缓存的成本很高,只是软件开发人员往往低估了缓存带来的问题和复杂度提升。近日,来自 Twitter 的软件工程师 Mike Solomon 发表了一篇博文,从以下几个方面分析了实现缓存的困难之处:

  • 缓存数据更难以推断:缓存意味着不从真实数据源读取数据。因此,每次读或写缓存数据都可能与真实数据源不匹配。在问题追踪时必须经常考虑这种情况。
  • 缓存数据可能导致“视角(perspective)”Bug:比如,一个新闻站点上有个“最佳文章”列表,其中的内容可能会随登录用户的不同而变化。一个常犯的缓存错误是缓存的数据独立于视角,具有不同视角的用户看到了相同的内容。这会导致严重的隐私甚或安全问题。
  • 涉及缓存的行为难以重现:当引入缓存,就引入了一个新的层,其上的行为可能同预期不符。缓存对象依赖访问模式,会随时间或其它因素变化。一旦出现问题,很难通过重现行为来帮助问题修复。
  • 访问模式变化可能会损害性能:访问模式变化可能会莫名其妙地导致缓存命中率降低,延迟增加,吞吐量减少。但流量水平可能会保持不变,这屏蔽了问题原因,潜在地增加了底层数据源的负载及问题处理的难度。
  • 进程内缓存可能会增加 GC 压力:在具有垃圾收集功能的语言中,大量长寿命的缓存对象会增加垃圾收集的时间和次数。
  • 缓存失败恢复困难:缓存机器故障,存储在内存中的数据就会丢失,无法简单地重新上线。在缓存重新创建的过程中,吞吐量可能会下降。

尽管缓存有着这些困难,但还是需要它,比如, Facebook、Twitter、Instagram 及 Reddit 都将缓存视为一个关键的基础设施。Facebook 基础设施工程师已经构建了一个名为 mcrouter 的工具用于管理缓存。该工具开源不到一年,就获得了1000 多颗星,缓存的重要性可见一斑。只是,在考虑使用缓存的时候需要注意上述问题。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-09-21 19:004241
用户头像

发布了 1008 篇内容, 共 433.0 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

MIAOYUN | 每周AI新鲜事儿(06.27-07.04)

MIAOYUN

人工智能 AI AI 原生云 AI Agent,

夜莺监控 V8 正式版,来了!

巴辉特

夜莺监控 开源监控 IT运维监控

AI 智能词汇 App 的开发

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI背单词

Magic Disk Cleaner for Mac(磁盘垃圾清理工具)

晨光熹微

Audition 2024 for Mac(Au2024音频录制和编辑)

晨光熹微

CST圆极化贴片天线阵列 --- 频域F-solver, 领域分解法 DDM

思茂信息

cst cst操作 cst仿真软件 CST软件 CST Studio Suite

百度阮瑜:百度大模型应用赋能产业智变|2025全球数字经济大会

科技热闻

Navicat for SQL Server for mac(数据库管理工具)

晨光熹微

Viper FTP for Mac(ftp管理工具)

晨光熹微

System Dashboard for Mac(系统仪表板)

晨光熹微

Hit‘n’Mix RipX DAW PRO for Mac(专业音频处理软件)

晨光熹微

洪水无情 亲人有爱 | 紧急驰援贵州榕江背后的重汽温度

科技热闻

大数据-33 HBase 整体架构 HMaster HRegion

武子康

Java 大数据 hadoop 分布式 HBase

PatterNodes 3 for Mac(矢量图形模式创建软件)

晨光熹微

能源管理升级之道:ISO 50001 标准解析与 MyEMS 系统实践

开源能源管理系统

开源 能源管理 ISO 50001

Acrobat Pro DC 2023 for mac(专业PDF编辑软件)

晨光熹微

在AI时代,挖掘真实需求比技术实现更具挑战性

qife122

开源项目 AI技术

燃动一夏,活力绽放 | MO六月运动月精彩收官

MatrixOrigin

Parallels Toolbox for mac(工具箱合集)

晨光熹微

使用Docker实现KWDB数据库的快速部署与配置

KaiwuDB

中国电信国际:打造全球化招聘“数字样板间”

用友BIP

WebGL开发数字孪生技术方案

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

🚀 革命性升级!JimuReport 积木报表 v2.1.0 版本震撼发布

JEECG低代码

数据可视化 报表 数据大屏 报表工具 大屏设计器

Loopback for Mac(mac虚拟音频设备)

晨光熹微

Serato DJ Pro Suite for Mac(专业DJ设备)

晨光熹微

用友BIP废钢智能判级系统成功入选京津冀数字经济协同发展典型案例

用友BIP

AI 背单词 App 的开发流程

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI背单词

AlphaGPT通过国家AIGC生成式算法备案,为法律专业人士提供更加合规可靠的ai技术支持

科技汇

充电宝频频“爆雷”,你的生产追溯系统需要一场“极速”革命

镜舟科技

数据库 数据分析 数据处理 StarRocks 湖仓一体

告别高库存低周转:AI重塑零售商品效率!

第七在线

不懂供应链,别谈利润增长和成本降低了!

积木链小链

数字化转型 智能制造 供应链管理

在使用缓存时应该注意哪些问题?_语言 & 开发_谢丽_InfoQ精选文章