1.概念
主从复制,是指将一台Redis
服务器的数据,复制到其他的Redis服务器。前者称为主节点(master
),后者称为从节点(slave
);数据的复制是单向的,只能由主节点到从节点。
2.作用
2.1数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
2.2故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
2.3负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
2.4高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础
一般来说 ,要将Redis
运用于工程项目中,只使用一台Redis
是万万不能的(宕机) 。
3.查看信息
192.168.200.40:6379> info replication
role:master #角色
connected_slaves:0 #从机数
master_replid:d4957089f7f69cf42f77d5de4fd7d8b4270165c3
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
4.方便起见,实验所使用的主从节点是在一台机器上的不同Redis
实例,其中主节点监听6379
端 口,从节点监听6380
和6381
端口;
5.创建三个配置三个文件
5.1使用 touch 文件名.conf
redis79.conf
redis80.conf
redis81.conf
5.2 分别添加以下配置
#引入 之前的 redis.conf 配置
include /usr/local/redis/config/redis.conf
port 6381 #端口号
pidfile /var/run/redis_6381.pid #pid名字
logfile "6381.log" #log 文件名字
dbfilename dump6381.rdb #dump.rdb 名字
6.启动连接Redis
从节点配置
192.168.200.40:6380> slaveor 127.0.0.1 6379
#真实的从主配置应该在配置文件中配置, 这样的话是永久的,我们这里使用的是命令,暂时!
#配置文件配置,启动即生效。
#主机写,从机只能读
6.1 最后在主机里面set一个 a 值为a
127.0.0.1:6379> set a a
OK
到从机里面取
127.0.0.1:6380> get a
"a"
到这主从复制就OK了
如果你到从机里面set值 他会告诉你没有权限
127.0.0.1:6382> set b b
(error) READONLY You can't write against a read only replica.