11.03:Redis持久化、主從、哨兵、叢集、常見問題重點回顧

呱?!發表於2020-11-03

1.Redis的持久化:

RDB(預設)
二進位制儲存持久化資料,速度相對較快
持久化時機:save second keys
RDB無法保證資料的安全

2.AOF

AOF是一日誌的形式持久化,使用者的寫操作,速度慢
AOF持久化時機:always ,everysec,no
AOF相對RDB更加安全

3.官方推薦同時開啟RDB和AOF兩種持久化機制

在恢復資料時,AOF的持久化優先順序更高
同時開啟AOF和RDB ,在RDB執行持久化時,RDB資料會被AOF覆蓋

4.AOF重寫

自動重寫:指定AOF的檔案超過技術的100%,並且大小超過64M,自動執行AOF重寫
手動重寫:輸入命令

5.Redis主從(瞭解)

目的:提升Redis的讀取資料的能力
主從特點:主節點負責讀寫,從節點只負責讀
		從節點資料是從主節點同步的
		一個主節點可以有多個從節點,一個從節點只能隸屬一個主節點
		只需要在redis.conf檔案中,指定replicaof主節點ip,主節點port

6.Redis哨兵(瞭解)

在主從架構基礎上,解決Redis的單點故障問題
哨兵特點:需要在每一個Redis節點上配置哨兵
		每個哨兵都需要連線Master節點 

7.Redis叢集

Redis叢集的特點:提升讀寫能力,避免單點故障,提高儲存上限
Redis叢集特點:Redis叢集是無中心的
			 Redis叢集中每個節點都可以相互通訊,ping-pang機制
			 Redis叢集中存在投票機制,來確定某一個節點是否真的出現了故障(叢集節點個數最好是2n+1)
			 Redis叢集提供了16384個hash槽用來儲存資料,在使用者儲存資料時,需要對key進行crc16的運算,將結果對16384進行取餘,儲存到維護指定hash槽的節點上即可。
			 為了避免Redis節點出現故障,每一臺Redis節點都至少要有一個從節點【備份資料】
			 某一個hash槽丟失,Redis叢集癱瘓
連線Redis叢集
			 redis-cli客戶端:新增-c,保證可以在叢集間跳轉
			 圖形化介面:連線任意一個Redis叢集,即可連線整個Redis叢集
			 jedis:JedisCluster物件連線Redis叢集即可

8.Redis常見問題

刪除策略:	
	定時刪除:Redis針對設定了生存時間的key,會每100ms檢視三個key的生存時間是否到期,如果到期,刪除當前key
	惰性刪除:從Redis獲取資料時,會檢視當前key的剩餘生存時間,如果生存時間已經到期,直接刪除,當前key返回一個空
淘汰機制:

在這裡插入圖片描述
快取常見問題:

快取穿透:快取沒有資料,資料庫也沒有資料,大量請求訪問資料庫,資料庫當機

快取擊穿:快取中的熱點資料到期了,導致大量請求同時訪問資料庫,導致資料庫當機
加鎖、訪問一次加一次生存時間

快取雪崩:快取中大量資料同時到期,大量請求同時訪問資料庫
設定不同訪問時間,加鎖,訪問一次加一次生存時間

快取傾斜:大量請求同時訪問Redis的超級熱點資料,導致Redis當機
tomcat中新增一級快取,搭建主從(氪金)


雙寫一致性:在修改資料庫,並同步都快取時,存在資料安全問題
雙刪策略:處理雙寫一致性,1.在修改資料庫之前,先刪除快取中資料,在修改資料庫成功之後,2.延遲幾秒再次刪除快取中的資料

相關文章