1、編譯安裝
過程省略
2、主從配置
vi /data/usr/redis-4.0.11/conf/redis.conf
master:
bind 127.0.0.1 192.168.121.121
daemonize yes
logfile "/data/usr/redis-4.0.11/logs/redis.log"
pidfile /data/usr/redis-4.0.11/run/redis_6379.pid
dir /data/usr/redis-4.0.11/data
requirepass Redis2019!
slave:
bind 127.0.0.1 192.168.121.122
daemonize yes
logfile "/data/usr/redis-4.0.11/logs/redis.log"
pidfile /data/usr/redis-4.0.11/run/redis_6379.pid
dir /data/usr/redis-4.0.11/data
requirepass Redis2019!
masterauth Redis2019!
slaveof 192.168.121.121 6379
3、查看主從狀態
master:
redis-cli -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
127.0.0.1:6379> INFO reolication
127.0.0.1:6379> INFo replication
# Replication
role:master
connected_slaves:1
slave0:ip=192.168.121.122,port=6379,state=online,offset=24486,lag=1
master_replid:7ad1fd1b943f347c73970ccf1e50a51f9e17ad2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:24486
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:24486
slave:
redis-cli -h 192.168.121.122 -p 6379 -a Redis2019!
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.121.122:6379> INFO replication
# Replication
role:slave
master_host:192.168.121.121
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:24570
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:7ad1fd1b943f347c73970ccf1e50a51f9e17ad2d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:24570
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:24570
4、主從模式及持久化
redis的主從模式是異步模式,slave節點異步的從master節點複製數據,master節點提供讀寫,slave節點只提供讀服務,此爲默認配置,可以修改配置文件的 slave-read-only 參數做出改變,把yes替換爲no,即是把slave節點的只讀限制打開,master節點可以有多個slave節點。
快照持久化,即RDB文件持久化,是默認的持久化方式。按照一定的策略週期性的將數據保存到磁盤,對應產生的數據文件爲dump.rdb,默認該文件保存在啓動服務時所在目錄下。redis藉助fork命令的copy on write機制,在生成快照時,將當前進程fork一個子進程,然後子進程循環執行所有的命令,將數據寫入,稱爲RDB文件。Client可以使用save或者dbsave命令通知redis做一次快照持久化。save操作是主線程中保存快照的,由於redis是用一個主線程來處理所有client的請求,這種方式會阻塞所有client請求,所以不推薦使用save操作。另外,每次快照持久化都是將內存數據完整寫入到磁盤一次,並不是增量的,如果要同步的數據量大的話,且寫操作比較多,必然會使得磁盤產生大量的io操作,有可能會嚴重影響磁盤性能。
基於快照文件的主從同步:
slave第一次向master發出同步請求,master首先dump出rdb文件
持久化的默認設置:
save 900 1 # 900秒後至少1個key有變動save
save 300 10 # 300秒後至少10個key有變動save
save 60 10000 # 60秒後至少10000個key有變動save
stop-writes-on-bgsave-error yes # 錯誤處理,默認情況下,如果redis在後臺生成快照的時候失敗,那麼就會停止接收數據,目的是讓用戶能知道數據沒有持久化成功。
rdbcompression yes # 數據壓縮,默認會採用LZF對數據進行壓縮,如果想節省CPU性能,可以把壓縮功能禁用,但是數據集就會比沒壓縮的大。
rdbchecksum yes # 數據校驗,一個CRC64的校驗放在文件末尾,用來保證文件的完整性,但是在保存和加載文件時會損失一定性能(10%左右)
dbfilename dump.rdb # 持久化文件
dir ./ # 文件保存目錄,在哪裏執行啓動命令,文件就保存在哪裏