標籤:
一、redis主從複製特點:
1.master可以擁有多個slave
2.多個slave可以串連同一個master外,還可以串連到其他slave
3.主從複製不會阻塞master,在同步資料時,master可以繼續處理client請求
4.提高系統的伸縮性
5.可以在master禁用資料持久化,注釋掉master設定檔中的所有save配置,只需在slave上配置資料持久化
二、redis主從複製過程:
當配置好slave後,slave與master建立串連,然後發送sync命令。無論是第一次串連還是重新串連,master都會啟動一個後台進 程,將資料庫快照集儲存到檔案中,同時master主進程會開始收集新的寫命令並緩衝。後台進程完成寫檔案後,master就傳送檔案給 slave,slave將檔案儲存到硬碟上,再載入到記憶體中,接著master就會把緩衝的命令轉寄給slave,後續master將收到的寫命令發送給 slave。如果master同時收到多個slave發來的同步串連命令,master只會啟動一個進程來寫資料庫鏡像,然後發送給所有的slave。
三、redis主從配置過程
1). 同時啟動兩個Redis伺服器,可以考慮在同一台機器上啟動兩個Redis伺服器,分別監聽不同的連接埠,如6379和6380。啟動./redis-server local_6379.conf &./redis-server local_6380.conf & 2). 在Slave伺服器上執行一下命令:
/> redis-cli -p 6380
redis 127.0.0.1:6380>
slaveof 127.0.0.1 6379
OK redis 127.0.0.1:6380> config set masterauth redis
#假設Master的密碼為redis
OK 當然Master設定密碼為config set requirepass redis
上面的方式只是保證了在執行slaveof命令之後,redis_6380成為了redis_6379的slave,一旦服務(redis_6380)重新啟動之後,他們之間的複製關係將終止。
如果希望長期保證這兩個伺服器之間的主從關係,可以在redis_6380的設定檔中做如下修改:
/>
vi 6380.conf
將
# slaveof <masterip> <masterport>
改為
slaveof 127.0.0.1 6379
masterauth redis
儲存退出。 去除主從關係:slaveof no one備忘:
-
SLAVEOF host port
SLAVEOF 命令用於在 Redis 運行時動態地修改複製(replication)功能的行為。
通過執行 SLAVEOF host port 命令,可以將當前伺服器轉變為指定伺服器的從屬伺服器(slave server)。
如果當前伺服器已經是某個主伺服器(master server)的從屬伺服器,那麼執行 SLAVEOF host port 將使當前伺服器停止對舊主伺服器的同步,丟棄舊資料集,轉而開始對新主伺服器進行同步。
另外,對一個從屬伺服器執行命令 SLAVEOF NO ONE 將使得這個從屬伺服器關閉複製功能,並從從屬伺服器轉變回主伺服器,原來同步所得的資料集不會被丟棄。
利用『 SLAVEOF NO ONE 不會丟棄同步所得資料集』這個特性,可以在主伺服器失敗的時候,將從屬伺服器用作新的主伺服器,從而實現無間斷運行。
時間複雜度:
SLAVEOF host port ,O(N),
N 為要同步的資料數量。
SLAVEOF NO ONE , O(1) 。
傳回值:總是返回
OK 。 四、執行個體 127.0.0.1:6379> incr ab
(integer) 1 127.0.0.1:6380> get ab
"1" 127.0.0.1:6379> keys *
1) "a"
2) "ab" 127.0.0.1:6380> keys *
1) "a"
2) "ab" 127.0.0.1:6379> del a (integer) 1 127.0.0.1:6379> keys *
1) "ab" 127.0.0.1:6380> keys *
1) "ab" 127.0.0.1:6380> del ab(error) READONLY You can‘t write against a read only slave.
參考:
http://redis.readthedocs.org/en/latest/server/slaveof.html
http://redis.io/topics/replication
http://www.cnblogs.com/stephen-liu74/archive/2012/02/23/2364717.html
http://sofar.blog.51cto.com/353572/861276/
Redis 主從配置