您好,登錄后才能下訂單哦!
這篇文章主要講解了“redis知識(shí)點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“redis知識(shí)點(diǎn)有哪些”吧!
把數(shù)據(jù)存儲(chǔ)在內(nèi)存,極高的效率提供讀寫功能。配合sentinel實(shí)現(xiàn)主從,或者集群實(shí)現(xiàn)大數(shù)據(jù)和流量下的分布。
string list hash set zset
惰性刪除:查詢的時(shí)候發(fā)現(xiàn)過(guò)期,執(zhí)行del,然后返回null。對(duì)內(nèi)存不友好 定期刪除:后臺(tái)線程任務(wù)定期去刪除過(guò)期key。對(duì)cpu不友好。 redis是采用惰性刪除+定期刪除,保證了內(nèi)存和cpu的性能。
RDB 生產(chǎn)RDB文件:對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行持久化 載入RDB文件:對(duì)未過(guò)期的數(shù)據(jù)恢復(fù)到內(nèi)存中 save 會(huì)阻斷用戶操作。 bgsave不會(huì)阻斷用戶操作。 自動(dòng)持久化可以配置時(shí)間,比如900秒,1次操作的時(shí)候進(jìn)行、300秒60次操作的時(shí)候執(zhí)行、60秒200次操作的時(shí)候執(zhí)行。
AOF 生產(chǎn)AOF文件:保存執(zhí)行命令到AOF文件中。當(dāng)過(guò)期key被惰性刪除或者定期刪除后,寫入del key命令。 載入AOF文件:重新一條條執(zhí)行AOF文件中的命令。 復(fù)寫AOF文件:隨著時(shí)間延長(zhǎng),AOF會(huì)越來(lái)越大,所以需要重新生成AOF文件。這種生成方式是通過(guò)讀取內(nèi)存中的數(shù)據(jù),未過(guò)期的數(shù)據(jù)生成命令存在AOF中。
對(duì)于主從模式,持久化數(shù)據(jù)恢復(fù)到內(nèi)存中的時(shí)候,主會(huì)只會(huì)恢復(fù)未過(guò)期數(shù)據(jù),從所有數(shù)據(jù)都會(huì)進(jìn)行恢復(fù),從沒(méi)有惰性刪除和定期刪除,只會(huì)等待主來(lái)同步數(shù)據(jù)。
訂閱key的操作 訂閱某個(gè)操作的key
127.0.0.1 123 > slaveof 127.0.0.1 456 123成為456的從 全量同步:從向主發(fā)送SYNC,主生產(chǎn)RDB,同步給從,同時(shí)期間緩沖期產(chǎn)生的命令也同步給從。
部分同步:從斷線重連,向主發(fā)送PSYNC,主把斷線后的命令發(fā)給從。復(fù)制偏移量
命令同步:完全同步或者部分同步完成后,主會(huì)把命令同步給從。
部分同步實(shí)現(xiàn)原理:主機(jī)器ID+偏移量+復(fù)制積壓緩沖區(qū)
從會(huì)每秒一次發(fā)送心跳給主保持連接和傳遞偏移量
可以支持故障轉(zhuǎn)移,從服務(wù)器中選出新的主。
setinel監(jiān)控主,需要通過(guò)配置或者命令的方式指定。
setinel和主和從服務(wù)器進(jìn)行連接的時(shí)候會(huì)建議命令連接、消息連接。
setinel和主建立連接之后,會(huì)通過(guò)主服務(wù)發(fā)送的信息獲取到從服務(wù)器信息并與從服務(wù)器建立連接。
setinel通過(guò)主和從服務(wù)器信息發(fā)現(xiàn)其他setinel機(jī)器并建立命令連接。
setinel監(jiān)控到主服務(wù)器下線之后,會(huì)詢問(wèn)其他setinel服務(wù)器是否同意下線,同意下線達(dá)到閾值則會(huì)進(jìn)行下線。
sentinel如何發(fā)現(xiàn)主? 通過(guò)setinel配置初始化的主服務(wù)器
sentinel如何發(fā)現(xiàn)從? 通過(guò)主服務(wù)器給setinel回復(fù)的信息里面自動(dòng)發(fā)現(xiàn)從服務(wù)器
sentinel如何建立連接? sentinel會(huì)分別建立命令連接和消息連接。
sentinel如何發(fā)現(xiàn)其他sentinel? 通過(guò)主從服務(wù)器發(fā)送的消息發(fā)現(xiàn)其他sentinel,并且相互建立命令連接。
sentinel如何選出領(lǐng)頭sentinel 發(fā)現(xiàn)了主服務(wù)器下線的sentinel會(huì)相互詢問(wèn),并且把自己作為局部領(lǐng)頭。當(dāng)然選出來(lái)的局部領(lǐng)頭大于半數(shù),則該局部領(lǐng)頭成為全局領(lǐng)頭來(lái)選舉新主,并把從的主改為新主。
sentinel選舉出新的主 根據(jù)一定規(guī)則從里面選出新的主,規(guī)則要求就是網(wǎng)絡(luò)好,數(shù)據(jù)最新,數(shù)據(jù)最新通過(guò)偏移量發(fā)現(xiàn),然后把主的角色改變。
sentinel把從的舊主改成新的主
sentinel如何發(fā)現(xiàn)服務(wù)下線? 通過(guò)每秒一次的ping命令,服務(wù)器沒(méi)有回復(fù)pong達(dá)到一定時(shí)間認(rèn)為下線。
sentinel選取領(lǐng)頭就是通過(guò)raft算法實(shí)現(xiàn)的。
setinel能夠支持主從,但是無(wú)法解決高并發(fā)下單機(jī)內(nèi)存過(guò)大和qps過(guò)大的問(wèn)題。這種情況下需要redis集群來(lái)解決 redis集群每臺(tái)機(jī)器分配若干個(gè)槽,0-2的14次方-1個(gè),每臺(tái)機(jī)器負(fù)責(zé)若干個(gè)槽。通過(guò)對(duì)key的hash值取模計(jì)算的方式能得屬于哪個(gè)槽,也能得知屬于哪個(gè)機(jī)器,如果當(dāng)前機(jī)器不是槽所屬機(jī)器,則會(huì)通過(guò)move指令讓客戶端重定向到指定機(jī)器。
redis重新分片 新機(jī)器的槽知道之后,源機(jī)器里面的槽會(huì)一個(gè)一個(gè)遷移過(guò)去,在遷移過(guò)程中如果有請(qǐng)求過(guò)來(lái),則會(huì)查詢?cè)礄C(jī)器是否存在對(duì)應(yīng)的key,如果存在則源機(jī)器執(zhí)行,不存在則通過(guò)ack重定向到新機(jī)器執(zhí)行。
集群復(fù)制與故障轉(zhuǎn)移 集群之間通過(guò)ping消息維持心跳。如果其中某主節(jié)點(diǎn)首先得到下線消息,會(huì)詢問(wèn)集群中所有主節(jié)點(diǎn),當(dāng)這個(gè)臺(tái)機(jī)器得到半數(shù)以上下線回復(fù)。這個(gè)主節(jié)點(diǎn)會(huì)廣播一條下線消息。下線的主節(jié)點(diǎn)的從節(jié)點(diǎn)收到消息之后,會(huì)有一個(gè)從節(jié)點(diǎn)被選中自動(dòng)成為主節(jié)點(diǎn),并且廣播pong消息,告訴其他主節(jié)點(diǎn)新的主節(jié)點(diǎn)誕生并接管原有的槽。
選主過(guò)程 從節(jié)點(diǎn)會(huì)廣播一條我是要選舉成為主的消息,沒(méi)過(guò)投過(guò)票的會(huì)投給他,根據(jù)故障轉(zhuǎn)移次數(shù)來(lái)唯一確定最新一次的投票。半數(shù)以上的主節(jié)點(diǎn)同意的從節(jié)點(diǎn)會(huì)自動(dòng)成為主節(jié)點(diǎn)。
1.什么是二八定律 數(shù)據(jù)常被用到的只有20%甚至更少,針對(duì)這20%數(shù)據(jù)做優(yōu)化效果更好,性價(jià)比更高。
2.如何通過(guò)redis實(shí)現(xiàn)分布式鎖?
3.緩存穿透 場(chǎng)景:查詢數(shù)據(jù)庫(kù)中一定不存在的數(shù)據(jù),導(dǎo)致請(qǐng)求直接落db。 解決方案:針對(duì)不存在的數(shù)據(jù),緩存中存放null。也可以把可能存在的數(shù)據(jù)放入布隆過(guò)濾器,這樣能過(guò)濾掉一定不存在的數(shù)據(jù)。
4.緩存雪崩 場(chǎng)景:大量數(shù)據(jù)緩存key集中過(guò)期,導(dǎo)致請(qǐng)求大量落入db 解決方案:緩存過(guò)期時(shí)間設(shè)置的時(shí)候增加隨機(jī)數(shù),熱門的數(shù)據(jù)緩存過(guò)期時(shí)間可以長(zhǎng)一點(diǎn),冷門數(shù)據(jù)緩存過(guò)期時(shí)間短一點(diǎn)、
5.緩存擊穿 場(chǎng)景:緩存中熱點(diǎn)數(shù)據(jù)過(guò)期,瞬間大量請(qǐng)求落入db。 解決方案:熱點(diǎn)數(shù)據(jù)永不過(guò)期,請(qǐng)求db的時(shí)候使用分布式鎖。
感謝各位的閱讀,以上就是“redis知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)redis知識(shí)點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。