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