Redis主從復制原理:
通過把這個RDB文件或AOF文件傳給slave服務器,slave服務器重新加載RDB文件,來實現復制的功能!
復制的話:主服務器可以有多個從服務器!!! 不僅這樣從服務器還可以有從服務器,可以做成星狀的結構!
復制的話也不會阻塞進程,同樣fork一個子進程來做!
復制的原理:
當建立一個從服務器后,從服務器會想主服務器發送一個SYNC的命令,主服務器接收到SYNC命令之后會執行BGSAVE
然后保存到RDB文件,然后發送到從服務器!收到RDB文件然后就載入到內存!
最早不支持增量,到2.8之后就支持增量了!
Redis主從配置:
配置非常簡單:
我要把:192.168.0.201 6380 作為192.168.0.201 6379的從就一條命令
92.168.0.201:6380> slaveof 192.168.0.201 6379 OK 然后使用INFO查看下: # Replication role:slave master_host:192.168.0.201 master_port:6379 master_link_status:up master_last_io_seconds_ago:7 master_sync_in_progress:0 slave_repl_offset:85 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 然后在到主的上面看下: 15:38 [root@server.tianshuai.com]$ redis-cli -h 192.168.0.201 -p 6379 192.168.0.201:6379> INFO # Replication role:master connected_slaves:1 slave0:ip=192.168.0.201,port=6380,state=online,offset=183,lag=1 # master_repl_offset:183 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:182 從2.61 的時候!從是僅讀的 192.168.0.201:6380> SET key1 2 (error) READONLY You can't write against a read only slave. 192.168.0.201:6380>
##現實工作場景中,寫和讀是1:10的嗎,我們就可以,設置多1個主多個從這樣,進行讀寫分離!