[{"data":1,"prerenderedAt":259},["ShallowReactive",2],{"term-c\u002Fcaching":3,"related-c\u002Fcaching":249},{"id":4,"title":5,"acronym":6,"body":7,"category":231,"description":232,"difficulty":233,"extension":234,"letter":235,"meta":236,"navigation":126,"path":237,"related":238,"seo":243,"sitemap":244,"stem":247,"subcategory":6,"__hash__":248},"terms\u002Fterms\u002Fc\u002Fcaching.md","Caching",null,{"type":8,"value":9,"toc":225},"minimark",[10,15,19,23,26,30,214,218,221],[11,12,14],"h2",{"id":13},"eli5-the-vibe-check","ELI5 — The Vibe Check",[16,17,18],"p",{},"Caching is saving the result of a slow operation so you can reuse it quickly next time. Instead of asking the database for the same data 1,000 times, you ask once, save the answer, and return the saved answer for the next 999 requests. Huge speed boost.",[11,20,22],{"id":21},"real-talk","Real Talk",[16,24,25],{},"Caching stores the results of expensive operations (DB queries, API calls, computations) in fast-access storage (memory, Redis) so future requests can be served without repeating the work. Cache entries have a TTL (time-to-live) after which they're invalidated.",[11,27,29],{"id":28},"show-me-the-code","Show Me The Code",[31,32,37],"pre",{"className":33,"code":34,"language":35,"meta":36,"style":36},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F Check cache first, then DB\nconst cached = await redis.get('user:42');\nif (cached) return JSON.parse(cached);\n\nconst user = await db.user.findById(42);\nawait redis.setex('user:42', 3600, JSON.stringify(user));\nreturn user;\n","javascript","",[38,39,40,49,96,121,128,163,204],"code",{"__ignoreMap":36},[41,42,45],"span",{"class":43,"line":44},"line",1,[41,46,48],{"class":47},"sHwdD","\u002F\u002F Check cache first, then DB\n",[41,50,52,56,60,64,68,71,74,78,81,84,88,90,93],{"class":43,"line":51},2,[41,53,55],{"class":54},"spNyl","const",[41,57,59],{"class":58},"sTEyZ"," cached ",[41,61,63],{"class":62},"sMK4o","=",[41,65,67],{"class":66},"s7zQu"," await",[41,69,70],{"class":58}," redis",[41,72,73],{"class":62},".",[41,75,77],{"class":76},"s2Zo4","get",[41,79,80],{"class":58},"(",[41,82,83],{"class":62},"'",[41,85,87],{"class":86},"sfazB","user:42",[41,89,83],{"class":62},[41,91,92],{"class":58},")",[41,94,95],{"class":62},";\n",[41,97,99,102,105,108,111,113,116,119],{"class":43,"line":98},3,[41,100,101],{"class":66},"if",[41,103,104],{"class":58}," (cached) ",[41,106,107],{"class":66},"return",[41,109,110],{"class":58}," JSON",[41,112,73],{"class":62},[41,114,115],{"class":76},"parse",[41,117,118],{"class":58},"(cached)",[41,120,95],{"class":62},[41,122,124],{"class":43,"line":123},4,[41,125,127],{"emptyLinePlaceholder":126},true,"\n",[41,129,131,133,136,138,140,143,145,148,150,153,155,159,161],{"class":43,"line":130},5,[41,132,55],{"class":54},[41,134,135],{"class":58}," user ",[41,137,63],{"class":62},[41,139,67],{"class":66},[41,141,142],{"class":58}," db",[41,144,73],{"class":62},[41,146,147],{"class":58},"user",[41,149,73],{"class":62},[41,151,152],{"class":76},"findById",[41,154,80],{"class":58},[41,156,158],{"class":157},"sbssI","42",[41,160,92],{"class":58},[41,162,95],{"class":62},[41,164,166,169,171,173,176,178,180,182,184,187,190,192,194,196,199,202],{"class":43,"line":165},6,[41,167,168],{"class":66},"await",[41,170,70],{"class":58},[41,172,73],{"class":62},[41,174,175],{"class":76},"setex",[41,177,80],{"class":58},[41,179,83],{"class":62},[41,181,87],{"class":86},[41,183,83],{"class":62},[41,185,186],{"class":62},",",[41,188,189],{"class":157}," 3600",[41,191,186],{"class":62},[41,193,110],{"class":58},[41,195,73],{"class":62},[41,197,198],{"class":76},"stringify",[41,200,201],{"class":58},"(user))",[41,203,95],{"class":62},[41,205,207,209,212],{"class":43,"line":206},7,[41,208,107],{"class":66},[41,210,211],{"class":58}," user",[41,213,95],{"class":62},[11,215,217],{"id":216},"when-youll-hear-this","When You'll Hear This",[16,219,220],{},"\"Cache the homepage data for 5 minutes.\" \u002F \"The cache is stale — invalidate it.\"",[222,223,224],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":36,"searchDepth":51,"depth":51,"links":226},[227,228,229,230],{"id":13,"depth":51,"text":14},{"id":21,"depth":51,"text":22},{"id":28,"depth":51,"text":29},{"id":216,"depth":51,"text":217},"backend","Caching is saving the result of a slow operation so you can reuse it quickly next time.","intermediate","md","c",{},"\u002Fterms\u002Fc\u002Fcaching",[239,240,241,242],"Redis","Memcached","Rate Limiting","Performance",{"title":5,"description":232},{"changefreq":245,"priority":246},"weekly",0.7,"terms\u002Fc\u002Fcaching","UR3bO5feVsUnEBypA0ZSUj4RU9CJeLKrzAjnYW1pJ1g",[250,253,256],{"title":240,"path":251,"acronym":6,"category":231,"difficulty":233,"description":252},"\u002Fterms\u002Fm\u002Fmemcached","Memcached is Redis's simpler sibling — an in-memory cache that's great at one thing: storing key-value pairs really fast.",{"title":241,"path":254,"acronym":6,"category":231,"difficulty":233,"description":255},"\u002Fterms\u002Fr\u002Frate-limiting","Rate limiting is like a bouncer who says 'you can come in 100 times per hour, then you wait.",{"title":239,"path":257,"acronym":6,"category":231,"difficulty":233,"description":258},"\u002Fterms\u002Fr\u002Fredis","Redis is an incredibly fast database that lives entirely in memory (RAM). It's used as a cache, a session store, and a message queue.",1776518263678]