1. 程式人生 > 程式設計 >Python join()函式原理及使用方法

Python join()函式原理及使用方法

最近在面試,問到了Redis的一些問題,發現自己對Redis真是一知半解,所以再來學習一遍。

一、如何配置主從

  1、通過配置檔案

  2、通過slaveof 命令

slaveof masterIP masterport

二、複製

Redis的複製功能分為資料同步(sync)和命令傳播(propagate)。

 

 

我們知道Redis有完整同步和部分同步,那如何實現呢?這個其實就是靠PSYNC,那PSYNC命令是如何實現的呢?下面我們看下,首先,這裡要先解釋幾個名詞:

(1)複製偏移量

複製偏移量分為主伺服器複製偏移量和從伺服器複製偏移量,主伺服器每次向從伺服器傳播N個位元組的資料時,就將自己的複製偏移量加N。從伺服器每次收到主伺服器同步來的N個位元組後,也會將自己的複製偏移量加N,當主從伺服器的資料處於一致狀態時,兩者的複製偏移量也是相同的,相反,如果兩者的偏移量不同,則資料是不一致的。

(2)複製積壓緩衝區

複製積壓緩衝區是主伺服器維護的一個固定長度的先進先出佇列(FIFO),預設大小為1MB。固定先進先出佇列和普通的先進先出佇列一樣,新元素從一邊進入佇列,舊元素從另一邊彈出佇列。和普通的先進先出佇列不一樣的地方就是,固定長度的隊列當入隊元素資料量大於佇列長度時,最先入隊的元素就會被彈出,而新元素會被放進佇列。當主伺服器進行命令傳播時,它不僅會將命令傳送給所有從伺服器,同時還會將寫命令入隊到複製積壓緩衝區,並且緩衝區的每個位元組記錄相應的複製偏移量。

(3)伺服器執行ID

每個redis伺服器,不管是主伺服器還是從伺服器都會有自己的執行ID。執行伺服器ID在伺服器啟動時生成,有40個隨機的十六進位制的字串組成。當從伺服器第一次對主伺服器進行復制時,主伺服器會將自己的執行ID傳送給從伺服器,從伺服器會將這個ID儲存起來。後邊斷開後重連時會用上。

PSYNC命令的實現: