缓存击穿(Cache Breakdown)是不是一个很迷惑的翻译

3 天前
 SGL
缓存穿透(Cache Penetration)翻译比较形象,缓存和数据库都没有,连兜底的都每个,可不就穿过去了,透了一个窟窿,从逻辑上比较形象。

缓存雪崩(Cache Avalanche)翻译也不错,请求一下子都垮下来了,从感性上比较形象。

缓存击穿(Cache Breakdown), 这个穿字一出来就很容易和缓存穿透混淆,最有问题的是它用了“穿”,并且这个穿还是和“穿透”是同一个字。
3606 次点击
所在节点    程序员
17 条回复
lesismal
3 天前
这几个定义确实不怎么好,即使是英文原版,加上定义的细节,非常容易让人记混。反正如果有人面试问我这几个,我八成回答不准确。

我喜欢用自己的分类总结,比这三个定义更容易记忆而且更全面。如下:


这几个工程问题根本原因的共性:查询缓存的 key 不存在。主要有两类:
1. 传入的查询的 key 参数本来就不存在。例如传错参数、攻击时黑客随便弄的空 key 。
2. 业务上曾经存在该 key 、但是设置了有效期、查询时过期了。

造成工程问题时的另一个维度就是 key 的数量:
1. 少量 key
2. 大量 key

key 不存在的原因、key 的数量维度结合起来的四种情况。

完整详情,欢迎评论:
https://gist.github.com/lesismal/3640d2a74db3eaf303bb8d40ecd0de05
nuk
3 天前
穿透是本来 cache 就不会起作用,击穿是本来 cache 需要起作用但没起作用
xljya
3 天前
从中文层面的话,是有点迷惑,穿透是不一定破坏结构(光穿透玻璃),但也包含了破坏结构的情况,所以能说击穿是穿透的一个特例
aarontian
3 天前
我比较排斥的八股属于:哪怕你书本基础再扎实,人再聪明,项目经验再丰富再垂直,但你没专门为了面试背过这个概念,那就会懵。

“什么叫缓存穿透/击穿/雪崩”这个问题就比较典型,一直以来给我的感觉就是为八股而八股的 redis 初代八股。
doraemonki
3 天前
也不知道是谁发明的这些词,说来说去就一句话搞定:缓存查不到了
dapang1221
3 天前
击穿指的是缓存废了,把后面的数据库击穿了吧,比如某个 cache key 配置的有误,导致缓存没生效,突然成千上万个请求穿过了缓存打到了数据库查询上
charlie21
3 天前
缓存查到了
缓存没查到了

这是一个维度的东西

-

缓存应该查到而查到了
缓存不应该查到而查到了
缓存应该查到而没查到
缓存不应该查到而没查到

“查没查到” 和 “应该不应该查到”,这是两个维度的东西。 你举出的那个描述力很低名词 是指 如上四种情况 的哪个情况?
doraemonki
3 天前
@charlie21 你看直接描述大家都懂,况且这个知识点本身属于缓存淘汰策略,非要造个词语出来吗
SGL
3 天前
@charlie21 是比那四种情况中更细的一种情况,短时间大量的针对个别热点缓存的“缓存应该查到而没有查到”,这个短时间短到什么地步——>第一个缓存未命中的请求处理中来不及更新缓存,大量相似请求接踵而至。
doraemonki
3 天前
@SGL 这么细分下去再排列组合,多少词语都不够用的
SGL
3 天前
@doraemonki 没办法,这玩意儿是 Redis 的八股老题
SGL
3 天前
@doraemonki 不过这个场景挑出来其实也不是没有道理,热点数据失效,就是概念定义的词汇选的不好。
moverinfo
3 天前
缓存穿透是意味着缓存不存在,然后使请求打到了 DB ,而 DB 里也没有数据。这时候访问 DB 是没有意义的。而击穿是指热键失效问题,大量的请求打到了同一个键,造成并发访问 DB 的情况,等于缓存失效了。雪崩是指大量的不同的缓存同时失效了。
v2xm
2 天前
感觉就是八股, 没啥大意思, 我目前是这么记的,
- 穿透, 缓存和 db 本来就都没有, 都是窟窿, 透过去了
- 击穿, 缓存本来有的, 但某个点的没了, 像是被击穿了
- 雪崩, 缓存本来有的, 但好多都一起没了, 像是雪崩
totoro52
2 天前
那你想个好点的词来
Inod
1 天前
不要看“穿”字,看“击”和“透”。击,有目标(缓存)才击;透,无目标(缓存)透过。这样看是不是好记一点?
vishun
9 小时 40 分钟前
感觉与个人接触到的知识面相关,例如安全方面的人可能会觉得`穿透`更贴切,因为好多攻击名词都是用`穿透`,但是不关注这方面的人反而感觉`缓存击穿`要好,例如我个人只知道`内网穿透`,而`内外穿透`是一个中性词,从而也认`穿透`是中性词,反而不如`击穿`表达的更贴切。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1157654

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX