2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

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

  • 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:004112
用户头像

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

关注

评论

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

快速了解什么是MES系统

万界星空科技

工业互联网 制造业 生产管理系统 mes 万界星空科技

pyhttptest 实操指南:测试RESTful API的有效方法

Liam

测试 后端 测试工具 REST API pyhttptest

软件测试丨什么是性能测试?

测试人

软件测试

一文看懂分布式链路追踪

乘云数字DataBuff

应用性能监控 分布式链路追踪

现代前端工程化实践:Git、Husky、Commitlint与PNPM的协同作战

秃头小帅oi

如何开展性能测试?性能测试的流程是什么样子?

测试人

软件测试 性能测试 自动化测试 测试开发

斯嘉丽·约翰逊指控 OpenAI 非法使用其声音;微软推出AI 工具「回顾」(Recall)丨RTE 开发者日报 Vol.208

声网

NumPy 数组排序、过滤与随机数生成详解

不在线第一只蜗牛

Python 数组 排序 Numpy

什么是DNS缓存投毒攻击,有什么防护措施

德迅云安全杨德俊

AI 新质生产力创新先锋 焱融科技入选中国生成式AI企业TOP50

焱融科技

人工智能 高性能存储 软件定义存储 新质生产力

数据驱动选品:阿里巴巴商品详情API在电商选品中的应用

tbapi

阿里巴巴 阿里巴巴API接口 阿里巴巴商品详情数据接口

微店商品API接口:电商数据集成的新利器

Noah

华为云CodeArts 12大安全防护机制,端到端全面保障软件供应链安全!

华为云PaaS服务小智

云计算 软件开发 华为云

Flink 任务调度策略:Lazy from Sources 深入解析

木南曌

实时计算

EIP-3074:革新以太坊授权方式的里程碑

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

YashanDB与慧点科技完成兼容互认证

极客天地

LLM实战:当网页爬虫集成gpt3.5

不在线第一只蜗牛

GPT LLM

Flink 任务调度策略:Eager 模式详解

木南曌

flink 实时计算

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