這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)redis中什么是穿透與雪崩,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站建設(shè)、網(wǎng)站制作與策劃設(shè)計(jì),神農(nóng)架林區(qū)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:神農(nóng)架林區(qū)等地區(qū)。神農(nóng)架林區(qū)做網(wǎng)站價(jià)格咨詢:189808205751.穿透:
理解:當(dāng)redis作用于數(shù)據(jù)緩存的時(shí)候,緩存的數(shù)據(jù)來源于db,而當(dāng)由于key在redis中未獲取到value時(shí),則邏輯代碼會(huì)從數(shù)據(jù)庫中獲取value,這種現(xiàn)象叫做緩存穿透。
若存在大量key穿過緩存,從db獲取value,則會(huì)導(dǎo)致數(shù)據(jù)庫壓力劇增,甚至癱瘓。
方案:a.當(dāng)出現(xiàn)大量無效key時(shí),會(huì)從數(shù)據(jù)庫獲取value,使用分布式互斥鎖對(duì)loaddb進(jìn)行控制。
b.對(duì)請(qǐng)求進(jìn)行驗(yàn)證,判斷是否是有效的key,比如布隆過濾器。
c.無論key是否取到值,直接返回null。對(duì)不太穩(wěn)定的緩存設(shè)置過期時(shí)間,如果緩存過期,異步起一個(gè)線程從db中獲取數(shù)據(jù)。
比較:待補(bǔ)充
2。雪崩:
理解:redis服務(wù)器宕機(jī)
方案:redis集群,主從復(fù)制,哨兵模式,redis-cluster
比較:
主從復(fù)制:讀寫分離,一旦主機(jī)宕機(jī),需要手動(dòng)進(jìn)行從機(jī)升級(jí),并且容易出現(xiàn)短時(shí)間無法寫的問題
哨兵模式:完善讀寫分離的技術(shù),實(shí)現(xiàn)當(dāng)主機(jī)宕機(jī)后,自動(dòng)進(jìn)行master選舉,但數(shù)據(jù)集中在master中,當(dāng)master壓力過大,很難擴(kuò)容,通過哨兵+主從復(fù)制可以實(shí)現(xiàn)redis的高可用,但
很難實(shí)現(xiàn)高并發(fā)即分散服務(wù)器壓力,在對(duì)并發(fā)量要求不大,推薦使用
redis-cluster:可實(shí)現(xiàn)高可用,高并發(fā),擴(kuò)容,縮容,maseter選舉,在高并發(fā)情況下,選cluster搭建redis集群。
##redis主從復(fù)制與哨兵模式搭配使用:前者提供高可用,后者提供master選舉
##redis-cluster=主從復(fù)制+哨兵模式+高并發(fā)+可擴(kuò)展。
1.下載redis
2.安裝gcc執(zhí)行make命令安裝redis
主從復(fù)制:
啟動(dòng)多個(gè)redis,slaveofipport設(shè)置master,inforeplication查看redis主從信息
注意項(xiàng):1.當(dāng)master存在密碼是slave必須配置文件masterauth設(shè)置主機(jī)的密碼,或者使用configsetmasterauth手動(dòng)設(shè)置密碼,不然即使slaveof執(zhí)
行成功,master-link-status顯示為down,設(shè)置完masterauth密碼后則顯示up。
2.當(dāng)主從復(fù)制,master宕機(jī),必須手動(dòng)切換slave為master不然從機(jī)不會(huì)進(jìn)行master選舉,從機(jī)master-link-status變成down,會(huì)一直等待master啟動(dòng),master-link-
status恢復(fù)成up
3.master默認(rèn)可寫可讀,slave默認(rèn)只讀,可以修改slave-read-onlyyes:只讀no:讀寫
哨兵模式:master宕機(jī)自動(dòng)選舉master
注意項(xiàng):master宕機(jī)重啟后會(huì)作為slave自動(dòng)同步到選舉后的master上,大件事master和slave密碼要保持一致,不然選舉后將slave切換成maseter會(huì)因此失敗。
cluster集群:密碼也需要保持一致,而且需要修改/usr/local/share/gems/gems/redis-3.3.3/lib/redis/client.rb
(https://img2018.cnblogs.com/blog/1909126/201912/1909126-20191229210642240-329425897.png)修改成正確的密碼即可
cluster:每個(gè)key通過CRC16(key)%16384來決定放置哪個(gè)槽,共有16384個(gè)槽被分配到不同的master中(slave中是沒有分配曹的),從而將key放入對(duì)應(yīng)的master中,當(dāng)master
宕機(jī),其slave會(huì)升級(jí)成為master,并將原master的曹與數(shù)據(jù)轉(zhuǎn)移到新的master上。
擴(kuò)容:就是添加新的master-slave讓后將其他master的槽分?jǐn)偨o新家的master即可,槽中的數(shù)據(jù)也會(huì)隨之轉(zhuǎn)移。
縮容:相反。
命令:查看集群節(jié)點(diǎn)
clusternodes
查看key對(duì)應(yīng)的slot
clusterkeyslotkey
查看slot和節(jié)點(diǎn)的對(duì)應(yīng)關(guān)系
clusterslots
上述就是小編為大家分享的redis中什么是穿透與雪崩了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。