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 ./ # 文件保存目录,在哪里执行启动命令,文件就保存在哪里