缓存击穿(Cache Breakdown)是不是一个很迷惑的翻译 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
YanSeven
V2EX    程序员

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

  •  
  •   YanSeven 81 天前 4464 次点击
    这是一个创建于 81 天前的主题,其中的信息可能已经有所发展或是发生改变。
    缓存穿透(Cache Penetration)翻译比较形象,缓存和数据库都没有,连兜底的都每个,可不就穿过去了,透了一个窟窿,从逻辑上比较形象。

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

    缓存击穿(Cache Breakdown), 这个穿字一出来就很容易和缓存穿透混淆,最有问题的是它用了“穿”,并且这个穿还是和“穿透”是同一个字。
    17 条回复    2025-09-11 08:30:55 +08:00
    lesismal
        1
    lesismal  
       81 天前   2
    这几个定义确实不怎么好,即使是英文原版,加上定义的细节,非常容易让人记混。反正如果有人面试问我这几个,我八成回答不准确。

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


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

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

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

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

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

    这是一个维度的东西

    -

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

    “查没查到” 和 “应该不应该查到”,这是两个维度的东西。 你举出的那个描述力很低名词 是指 如上四种情况 的哪个情况?
    doraemonki
        8
    doraemonki  
       80 天前
    @charlie21 你看直接描述大家都懂,况且这个知识点本身属于缓存淘汰策略,非要造个词语出来吗
    YanSeven
        9
    YanSeven  
    OP
       80 天前
    @charlie21 是比那四种情况中更细的一种情况,短时间大量的针对个别热点缓存的“缓存应该查到而没有查到”,这个短时间短到什么地步>第一个缓存未命中的请求处理中来不及更新缓存,大量相似请求接踵而至。
    doraemonki
        10
    doraemonki  
       80 天前
    @SGL 这么细分下去再排列组合,多少词语都不够用的
    YanSeven
        11
    YanSeven  
    OP
       80 天前
    @doraemonki 没办法,这玩意儿是 Redis 的八股老题
    YanSeven
        12
    YanSeven  
    OP
       80 天前
    @doraemonki 不过这个场景挑出来其实也不是没有道理,热点数据失效,就是概念定义的词汇选的不好。
    moverinfo
        13
    moverinfo  
       80 天前 via iPhone
    缓存穿透是意味着缓存不存在,然后使请求打到了 DB ,而 DB 里也没有数据。这时候访问 DB 是没有意义的。而击穿是指热键失效问题,大量的请求打到了同一个键,造成并发访问 DB 的情况,等于缓存失效了。雪崩是指大量的不同的缓存同时失效了。
    v2xm
        14
    v2xm  
       80 天前   1
    感觉就是八股, 没啥大意思, 我目前是这么记的,
    - 穿透, 缓存和 db 本来就都没有, 都是窟窿, 透过去了
    - 击穿, 缓存本来有的, 但某个点的没了, 像是被击穿了
    - 雪崩, 缓存本来有的, 但好多都一起没了, 像是雪崩
    MIUIOS
        15
    MIUIOS  
       80 天前
    那你想个好点的词来
    Inod
        16
    Inod  
       78 天前
    不要看“穿”字,看“击”和“透”。击,有目标(缓存)才击;透,无目标(缓存)透过。这样看是不是好记一点?
    vishun
        17
    vishun  
       78 天前
    感觉与个人接触到的知识面相关,例如安全方面的人可能会觉得`穿透`更贴切,因为好多攻击名词都是用`穿透`,但是不关注这方面的人反而感觉`缓存击穿`要好,例如我个人只知道`内网穿透`,而`内外穿透`是一个中性词,从而也认`穿透`是中性词,反而不如`击穿`表达的更贴切。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4658 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 37ms UTC 01:08 PVG 09:08 LAX 17:08 JFK 20:08
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86