【Redis】Redis 主從模式搭建


主從模式介紹

  Redis雖然讀取寫入的速度都特別快,但是也會產生讀壓力特別大的情況。為了分擔讀壓力,Redis支持主從復制,Redis的主從結構可以采用一主多從或者級聯結構,Redis主從復制可以根據是否是全量分為全量同步和增量同步。下圖為級聯結構。 

  

主從同步過程

  Redis全量復制一般發生在Slave初始化階段,這時Slave需要將Master上的所有數據都復制一份。具體步驟如下: 
  -  從服務器連接主服務器,發送SYNC命令; 
  -  主服務器接收到SYNC命名后,開始執行BGSAVE命令生成RDB文件並使用緩沖區記錄此后執行的所有寫命令; 
  -  主服務器BGSAVE執行完后,向所有從服務器發送快照文件,並在發送期間繼續記錄被執行的寫命令; 
  -  從服務器收到快照文件后丟棄所有舊數據,載入收到的快照; 
  -  主服務器快照發送完畢后開始向從服務器發送緩沖區中的寫命令; 
  -  從服務器完成對快照的載入,開始接收命令請求,並執行來自主服務器緩沖區的寫命令;

   

主從模式搭建

  本例采用單例的1主2從的搭建方式。

  

服務類型 角色 IP地址 端口
Redis master 127.0.0.1 17007
Redis slave 127.0.0.1 17008
Redis slave 127.0.0.1 17009

  1、首先准備一個redis實例,參考【Redis】安裝及簡單使用

  2、准備一份主配置文件,端口是17007

 1 # 包含文件(redis-base.conf,文件從redis安裝目錄中拷貝的)
 2 include /data/soft/redis-sentinel/redis-base.conf
 3 
 4 # 將redis-base.conf文件中,bind注釋,需要在外網訪問,將protected-model改為no
 5 protected-mode no
6
7 # 端口 8 port 17007 9 10 # 后台運行 11 daemonize yes 12 13 # pid文件 14 pidfile redis_17007.pid 15 16 # 日志文件 17 logfile "/data/log/redis-sentinel-log/redis-17007-log/redis-17007.log" 18 19 # 主認證密碼 20 masterauth 123456 21 22 # 認證密碼 23 requirepass 123456 24 25 # 最大內存10M,一般為機器內存的3/4 26 maxmemory 10mb 27 28 # 內存達到最大時策略,可選擇其他策略 29 maxmemory-policy volatile-lru 30 31 # 目錄 32 dir /data/soft/redis-sentinel/redis-17007/ 33 34 # 快照文件 35 dbfilename dump-17007.rdb     

  3、准備一份從配置文件,端口是17008,17009,在主配置文件的基礎上,修改相應配置,並加上以下2行

1 # 從節點要跟隨的主節點
2 slaveof 192.168.0.3 17007
3 
4 # 主節點認證密碼,如果設置了密碼,就要設置
5 masterauth 123456

 

   4、目錄結構如圖:

    

  5、先啟動主節點,然后啟動從節點

    主節點啟動命令:redis-5.0.5/src/redis-server redis-17007/redis-17007.conf

    從節點啟動命令:redis-5.0.5/src/redis-server redis-17008/redis-17008.conf

 

  6、redis客戶端鏈接主節點,查看信息

    命令:redis-5.0.5/src/redis-cli -c -h 192.168.0.3 -p 17007 -a 123456

    主節點信息:

 1 192.168.0.3:17007> INFO Replication 
 2 # Replication
 3 role:master
 4 connected_slaves:2
 5 slave0:ip=192.168.0.3,port=17008,state=online,offset=1373,lag=0
 6 slave1:ip=192.168.0.3,port=17009,state=online,offset=1373,lag=1
 7 master_replid:535c43ecbf009f8eae1930d52c2fc6149432b5ee
 8 master_replid2:0000000000000000000000000000000000000000
 9 master_repl_offset:1373
10 second_repl_offset:-1
11 repl_backlog_active:1
12 repl_backlog_size:1048576
13 repl_backlog_first_byte_offset:1
14 repl_backlog_histlen:1373

 

    從節點信息:

 1 192.168.0.3:17008> INFO Replication 
 2 # Replication
 3 role:slave
 4 master_host:192.168.0.3
 5 master_port:17007
 6 master_link_status:up
 7 master_last_io_seconds_ago:5
 8 master_sync_in_progress:0
 9 slave_repl_offset:1261
10 slave_priority:100
11 slave_read_only:1
12 connected_slaves:0
13 master_replid:535c43ecbf009f8eae1930d52c2fc6149432b5ee
14 master_replid2:0000000000000000000000000000000000000000
15 master_repl_offset:1261
16 second_repl_offset:-1
17 repl_backlog_active:1
18 repl_backlog_size:1048576
19 repl_backlog_first_byte_offset:1
20 repl_backlog_histlen:1261 

  7、測試,在主節點存入緩存,在從節點取出緩存

1 192.168.0.3:17007> set foo bar 
2 OK
3 192.168.0.3:17007> get foo  
4 "bar"
5 192.168.0.3:17008> get foo 
6 "bar"
7 192.168.0.3:17009> get foo 
8 "bar"

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM