1、這次案例的是選擇windows版本,把redis複制三份,監聽端口分别是6379、6380、6381

分别複制2份,修改redis.conf的端口port 為6380 6381,并添加master服務說明:slaveof 127.0.0.1 6379
啟動主節點,然後再分别啟動分節點,如果是在正式環境,分節點的啟動間隔時間不宜太短,同時啟動,master需要把資料同步到各個slave,造成資源消耗大,是以會間隔兩分鐘左右啟動slave。
啟動的時候,可以直接進入軟體目錄,使用dos指令啟動,如果直接點選redis-server.exe,啟動配置預設端口還是6379,是以用dos指令啟動。
依次進入master和2個slave的目錄下,啟動redis服務:redis-server.exe redis.conf
master
slave
使用Jedis進行連接配接檢視,測試資訊
6379資訊:redis_version:2.4.5
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
process_id:14532
uptime_in_seconds:1439
uptime_in_days:0
lru_clock:1022289
used_cpu_sys:0.51
used_cpu_user:0.30
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:1
connected_slaves:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1211928
used_memory_human:1.16M
used_memory_rss:1211928
used_memory_peak:1211872
used_memory_peak_human:1.16M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1541142748
bgrewriteaof_in_progress:0
total_connections_received:7
total_commands_processed:40
expired_keys:0
evicted_keys:0
keyspace_hits:36
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:master
db0:keys=19,expires=0
db6:keys=1,expires=0
6380資訊:redis_version:2.4.5
redis_git_sha1:00000000
redis_git_dirty:0
arch_bits:64
multiplexing_api:winsock2
process_id:14548
uptime_in_seconds:1423
uptime_in_days:0
lru_clock:1022289
used_cpu_sys:0.51
used_cpu_user:0.14
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
connected_clients:2
connected_slaves:0
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
used_memory:1203480
used_memory_human:1.15M
used_memory_rss:1203480
used_memory_peak:1203424
used_memory_peak_human:1.15M
mem_fragmentation_ratio:1.00
mem_allocator:libc
loading:0
aof_enabled:0
changes_since_last_save:0
bgsave_in_progress:0
last_save_time:1541143334
bgrewriteaof_in_progress:0
total_connections_received:4
total_commands_processed:131
expired_keys:0
evicted_keys:0
keyspace_hits:14
keyspace_misses:2
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
vm_enabled:0
role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
db0:keys=20,expires=0
db6:keys=1,expires=0
如果此時停止6379,那麼就剩兩個從節點,要使6380成為新的節點,就要啟動redis-cli.exe,
slaveof no one,設定成新的節點。
這樣就可以在6380新的主節點上操作
當原來的主節點恢複啟動後,先将原來的主節點設定為從節點,這樣就可以從目前主節點擷取最新的資料。目前主節點是6380,是以先将6379設定為從節點,這樣可以從主節點擷取
6380的資料也就恢複過來了,然後将6380設定為從節點,6379設定為主節點
Redis主從複制(一主兩從/一主多從)的分析
IO劇增
每次slave斷開以後(無論是主動斷開,還是網路故障)再連接配接master都要将master全部dump出來rdb,在aof,即同步的過程都要重新執行一遍;是以要記住多台slave不要一下都啟動起來,否則master可能IO劇增(間隔1-2分)
複制延遲
由于所有的寫操作都是先在Master上操作,然後同步更新到Slave上,是以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。
可用性不高
當有主節點發生異常情況,就會導緻不能寫入,導緻業務出錯!
1、redis的複制功能是支援多個資料庫之間的資料同步。一類是主資料庫(master)一類是從資料庫(slave),主資料庫可以進行讀寫操作,當發生寫操作的時候自動将資料同步到從資料庫,而從資料庫一般是隻讀的,并接收主資料庫同步過來的資料,一個主資料庫可以有多個從資料庫,而一個從資料庫隻能有一個主資料庫。
2、通過redis的複制功能可以很好的實作資料庫的讀寫分離,提高伺服器的負載能力。主資料庫主要進行寫操作,而從資料庫負責讀操作。