網(wǎng)站開發(fā)總監(jiān)招聘西安seo網(wǎng)站管理
緩存讀寫策略:
Cache-Aside Pattern
讀緩存:? ? ? 先查詢緩存,存在則返回, 如果不存在則查詢DB, 再塞回緩存中,最后返回結(jié)果.
寫緩存:? ? ? 更新完成DB之后,刪除緩存.
適合場景:? 讀比較多的場景,更新比較少的場景. 像我們工作當(dāng)中,基礎(chǔ)配置系統(tǒng), 公私鑰管理系統(tǒng)就是這種.
Read/Write Through Pattern
讀緩存:?先查詢緩存,存在則返回, 如果不存在則查詢DB, 再塞回緩存中,最后返回結(jié)果.
寫緩存:
? ? ? ? ? ? 更新完數(shù)據(jù)庫;
? ? ? ? ? ? 更新成功之后, 更新緩存; 如果更新失敗,則不更新緩存;
適用場景:?
Write behind Pattern
讀緩存:?先查詢緩存,存在則返回, 如果不存在則查詢DB, 再塞回緩存中, 最后返回結(jié)果.
寫緩存:
? ? ? ? ? ?更新緩存;
? ? ? ? ? ?每隔一段時間,同步緩存信息到數(shù)據(jù)庫;
適用場景:? ? ? ? ? ??
緩存穿透是指查詢一個不存在的key, 如果緩存中不存在,則查詢數(shù)據(jù)庫; 如果大量的請求過來,導(dǎo)致大量無效的key過來,則會導(dǎo)致數(shù)據(jù)庫壓力較大.?
解決方案: 給不存在的key,設(shè)置一個標(biāo)識,設(shè)置緩存key為一個特定的標(biāo)識,這個標(biāo)識表示key不存在.?
緩存擊穿是指批量緩存key在同一時間失效,導(dǎo)致請求在緩存中查詢不到,直接查詢數(shù)據(jù)庫. 導(dǎo)致數(shù)據(jù)庫壓力較大.?
解決方案: 緩存失效時間設(shè)定隨機(jī)值,盡量避免無故失效;
//TODO
參考:
一文搞懂緩存和數(shù)據(jù)庫的一致性問題(全面總結(jié))_數(shù)據(jù)庫緩存一致性-CSDN博客