問:redis的pipeline有什麼好處?redis
前面作測試數據的時候用到 cat /tmp/redisTest.txt | /redis-5.0/src/redis-cli -h 127.0.0.1 -p 6379 --pipe算法
就是一個pipeline管道批量執行指令,能夠節省屢次IO往返的時間,可是若是指令間有依賴建議分批發送緩存
問:redis的同步機制?服務器
主從同步原理,通常集羣都是一個主多個從,主負責寫,從負責讀。開始主節點會啓動命令開始全量同步,而後會啓動增量同步。區塊鏈
全同步過程:測試
增量同步過程:blog
主從的弊端就是主服務器掛掉以後就不能進行寫操做了,因此就有了sentinel 哨兵進程
解決主從同步Master宕機後的主從切換問題:ip
流言協議Gossip,在雜亂無章中尋求一致(區塊鏈中有用到):內存
Redis的集羣原理
問:如何從海量數據裏快速找到所需?
一致性哈希算法(哈希環):對2^32次方取模,將哈希值的空間組織成虛擬圓環
當NodeC宕機了(在一致性哈希算法中,若是一臺服務器不能夠,其影響的只是此服務器到哈希環的前一臺服務器(逆時針方向上的第一臺)之間的數據,其餘數據不受影響,新增的數據也會到下一個節點,順時針的下一臺)
新增服務器NodeX (新增一臺服務器,受影響的只是新服務器到其環的前一臺服務器,逆時針第一臺之間的數據)
Hash環數據傾斜問題(大部分數據緩存到一個服務器上,分配不均勻)
一致性哈希又引入了虛擬節點解決數據傾斜的問題(一個節點計算多個hash值,結算結果位置放置一個虛擬節點,具體作法能夠在節點後面增長編號來實現)
在實際應用中把虛擬節點設置成32或更大,即便是不多的服務節點也能很好的數據分佈。