File tree Expand file tree Collapse file tree 1 file changed +72
-0
lines changed
content/posts/MonthlyLearning Expand file tree Collapse file tree 1 file changed +72
-0
lines changed Original file line number Diff line number Diff line change 1+ ---
2+ title : " Cache Aside"
3+ date : 2024-11-29
4+
5+ categories : [learning note]
6+ tags : ["Cache"]
7+ keywords : ["Cache"]
8+
9+ description : " Cache Aside"
10+ ---
11+
12+ ## Question & Answer
13+ ### 1. 什么是 cache aside 模式
14+ Cache aside 可能是最常用的缓存方法。此策略规定缓存必须位于一侧,并且应用程序将直接与缓存和数据库通信。\
15+ Cache aside通常是通用的,最适合读取密集型工作负载。
16+ #### 缓存流程
17+ ``` text
18+ 查询策略
19+ +---------------------+
20+ | 查询缓存数据 |
21+ +---------------------+
22+ |
23+ v
24+ +---------------------+
25+ | 缓存命中?(是/否) |
26+ +---------------------+
27+ | |
28+ |是 |否
29+ v v
30+ +---------+ +---------------------+
31+ | 返回数据 | | 查询数据库 |
32+ +---------+ +---------------------+
33+ |
34+ v
35+ +---------------------+
36+ | 将数据写入缓存 |
37+ +---------------------+
38+ |
39+ v
40+ +---------------------+
41+ | 返回数据 |
42+ +---------------------+
43+
44+ 更新策略
45+ +---------------------+
46+ | 数据更新请求 |
47+ +---------------------+
48+ |
49+ v
50+ +---------------------+
51+ | 更新数据库 |
52+ +---------------------+
53+ |
54+ v
55+ +---------------------+
56+ | 删除缓存或使之失效 |
57+ +---------------------+
58+
59+ ```
60+
61+ ### 2. 使用 cache aside 模式需要注意的问题
62+ - 此策略的缺点:在缓存未命中后需要三次网络往返。
63+ - 数据一致性,数据更新时,可能出现缓存和数据库不一致的短暂情况。
64+ - 如果缓存容量有限,可能会因缓存驱逐策略(如 LRU)导致数据被提前移除。
65+ - 缓存击穿,如果采用删除缓存的方案,在高并发场景下可能会导致缓存击穿。
66+ - 缓存雪崩,大量缓存同时失效时,可能导致大量请求直接打到数据库。
67+ - 缓存穿透,当查询的 key 在数据库中不存在,且未缓存时,可能导致对数据库的重复查询。
68+
69+
70+ ## 参考
71+ [ 数据库缓存策略] ( https://dfordebugging.wordpress.com/2022/08/17/database-caching-strategies/ )
72+ [ 聊聊数据库与缓存数据一致性问题] ( https://juejin.cn/post/6844903941646319623 )
You can’t perform that action at this time.
0 commit comments