上一篇 <<<Redis集群模式的類(lèi)型和缺陷匯總
下一篇 >>>Redis解決穿透擊穿問(wèn)題時(shí)使用的布隆過(guò)濾器知識(shí)點(diǎn)
緩存穿透
1.場(chǎng)景【key不存在轧飞,高并發(fā)查詢數(shù)據(jù)庫(kù)】
緩存穿透是指使用不存在的key進(jìn)行大量的高并發(fā)查詢,導(dǎo)致緩存無(wú)法命中,每次請(qǐng)求都要都要穿透到后端數(shù)據(jù)庫(kù)查詢耘子,使得數(shù)據(jù)庫(kù)的壓力非常大,甚至導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)壓死球切;
2.解決方案
a谷誓、接口層實(shí)現(xiàn)api限流、防御DDOS吨凑、接口頻率限制捍歪、網(wǎng)關(guān)實(shí)現(xiàn)黑名單、用戶授權(quán)鸵钝、id檢查等糙臼;
b、從緩存和數(shù)據(jù)庫(kù)都取不到數(shù)據(jù)的話恩商,一樣將數(shù)據(jù)庫(kù)空值放入緩存中变逃,加上短時(shí)間的有效期(只適合單個(gè)key 隨機(jī)生成不同key、影響正常使用)
c怠堪、布隆過(guò)濾器
緩存擊穿
1.場(chǎng)景【單個(gè)熱點(diǎn)key失效時(shí)揽乱,高并發(fā)查詢數(shù)據(jù)庫(kù)】
在高并發(fā)的情況下名眉,當(dāng)一個(gè)緩存key過(guò)期時(shí),因?yàn)樵L問(wèn)該key請(qǐng)求較大凰棉,多個(gè)請(qǐng)求同時(shí)發(fā)現(xiàn)緩存過(guò)期损拢,因此對(duì)多個(gè)請(qǐng)求同時(shí)數(shù)據(jù)庫(kù)查詢、同時(shí)向Redis寫(xiě)入緩存數(shù)據(jù)撒犀,這樣會(huì)導(dǎo)致數(shù)據(jù)庫(kù)的壓力非常大福压;
2.解決方案
a、使用分布式鎖
保證在分布式情況下或舞,使用分布式鎖保證對(duì)于每個(gè)key同時(shí)只允許只有一個(gè)線程查詢到后端服務(wù)荆姆,其他沒(méi)有獲取到鎖的權(quán)限,只需要等待即可嚷那;這種高并發(fā)壓力直接轉(zhuǎn)移到分布式鎖上胞枕,對(duì)分布式鎖的壓力非常大。獲取到鎖的請(qǐng)求將數(shù)據(jù)寫(xiě)入成功到redis中魏宽, 通知沒(méi)有獲取鎖的請(qǐng)求直接從Redis獲取數(shù)據(jù)即可
b腐泻、使用本地鎖
使用本地鎖與分布式鎖機(jī)制一樣,只不過(guò)分布式鎖適應(yīng)于服務(wù)集群队询、本地鎖僅限于單個(gè)服務(wù)使用派桩。
c、軟過(guò)期
設(shè)置熱點(diǎn)數(shù)據(jù)永不過(guò)期或者異步延長(zhǎng)過(guò)期時(shí)間蚌斩;
d铆惑、布隆過(guò)濾器
e、到期前的續(xù)命(在value設(shè)置一個(gè)比過(guò)期時(shí)間t0小的過(guò)期時(shí)間值t1送膳,當(dāng)t1過(guò)期的時(shí)候员魏,延長(zhǎng)t1并做更新緩存操作。)
緩存雪崩
1.場(chǎng)景【多個(gè)key同時(shí)失效叠聋,高并發(fā)查詢數(shù)據(jù)庫(kù)】
緩存雪崩指緩存服務(wù)器重啟(沒(méi)有持久化)或者大量的緩存集中在某個(gè)時(shí)間段失效撕阎,突然給數(shù)據(jù)庫(kù)產(chǎn)生了巨大的壓力,甚至擊垮數(shù)據(jù)庫(kù)的情況碌补。
2.解決方案
1.對(duì)不用的數(shù)據(jù)使用不同的失效時(shí)間
2.使用集群化分?jǐn)偛渴鹞覀僰ey
3.使用二級(jí)緩存
A1為原始緩存虏束,A2為拷貝緩存,A1失效時(shí)厦章,可以訪問(wèn)A2镇匀,A1緩存失效時(shí)間設(shè)置為短期,A2設(shè)置為長(zhǎng)期
推薦閱讀:
<<<分布式緩存與本地緩存的區(qū)別
<<<Ehcache基礎(chǔ)知識(shí)
<<<SpringBoot整合Ehcache
<<<Redis的5種數(shù)據(jù)類(lèi)型
<<<Redis存放實(shí)體對(duì)象的方式及區(qū)別
<<<Redis的應(yīng)用場(chǎng)景匯總
<<<Redis高效及線程安全的真正原因
<<<Redis為啥要分為16個(gè)庫(kù)
<<<RDB和AOF持久化方式的區(qū)別
<<<Redis與數(shù)據(jù)庫(kù)的一致性解決方案
<<<SpringBoot整合Redis的注解版本完成數(shù)據(jù)緩存
<<<Redis的淘汰策略
<<<Redis的事務(wù)操作(Mult和Watch)知識(shí)點(diǎn)
<<<Redis的過(guò)期機(jī)制使用場(chǎng)景示例
<<<Redis實(shí)現(xiàn)分布式鎖的原理分析
<<<Redis分布式鎖的實(shí)現(xiàn)代碼示例
<<<使用Redisson工具實(shí)現(xiàn)分布式鎖
<<<Redis集群模式之主從復(fù)制原理及存在的缺陷
<<<Redis集群模式之哨兵模式
<<<Redis集群模式之Cluster去中心化分片集群
<<<Linux環(huán)境下安裝單機(jī)Redis
<<<Redis Cluster集群環(huán)境搭建
<<<Redis Cluster如何動(dòng)態(tài)擴(kuò)容與縮容
<<<Redis Cluster主從節(jié)點(diǎn)自動(dòng)切換
<<<Redis集群模式的類(lèi)型和缺陷匯總
<<<Redis解決穿透擊穿問(wèn)題時(shí)使用的布隆過(guò)濾器知識(shí)點(diǎn)
<<<Redis與MySQL的數(shù)據(jù)同步解決方案
<<<阿里云的Canal框架實(shí)現(xiàn)Redis與Mysql同步原理及代碼示例
<<<阿里云的Canal框架配置
<<<Redis官方提出的redlock分布式鎖
<<<Redis的調(diào)優(yōu)設(shè)置
<<<Redis常見(jiàn)問(wèn)題匯總