redis緩存問題

緩存更新策略

1.lru/lfu/fifo - redis自帶,根據(jù)maxmemory-policy設(shè)置,數(shù)據(jù)無法保證一致性

2.超時(shí)剔除 - 設(shè)置expire,存在一定時(shí)間不一致問題

3.主動(dòng)更新 - 建議與超時(shí)剔除一起使用,一致性最好

低一致性使用最大內(nèi)存,超時(shí)剔除策略一起使用

高一致性使用超時(shí)剔除和主動(dòng)更新策略一起使用(避免主動(dòng)更新出問題后緩存癱瘓)

緩存粒度

緩存粒度應(yīng)適中,避免不必要內(nèi)存,網(wǎng)絡(luò)浪費(fèi)(只緩存重要字段)

緩存穿透

1.緩存空對(duì)象(數(shù)據(jù)變化頻繁場(chǎng)景)(緩存空間占用較多)

2.布隆過濾器(數(shù)據(jù)變化小場(chǎng)景)

無底洞優(yōu)化

更多的節(jié)點(diǎn)意味著更多的網(wǎng)絡(luò)消耗,批量操作更耗時(shí),當(dāng)節(jié)點(diǎn)增加到一定程度,再增加節(jié)點(diǎn)并無法提高性能

優(yōu)化:

1.命令優(yōu)化

2.減少網(wǎng)絡(luò)次數(shù)

3.降低連接成本(長(zhǎng)連接,連接池,nio)

緩存雪崩

1.保證緩存高可用(sentinel、cluster)

熱點(diǎn)key問題 - p361

2.高并發(fā)下緩存失效后多個(gè)線程同時(shí)申請(qǐng)建立緩存

解決:

1.互斥鎖,同時(shí)只能有一個(gè)線程申請(qǐng)建立緩存(setnx鎖),其它線程等待重新讀。(保證緩存構(gòu)建時(shí)間較短)?

2.永遠(yuǎn)不過期(定期構(gòu)建緩存)(重構(gòu)期間數(shù)據(jù)不一致)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容