redis主从分离 读写分离

前言
使用一个Redis实例作为主机,其余的作为备份机。主机和备份机的数据完全一致,主机支持数据的写入和读取等各项操作,而从机则只支持与主机数据的同步和读取。也就是说,客户端可以将数据写入到主机,由主机自动将数据的写入操作同步到从机。主从模式很好的解决了数据备份问题,并且由于主从服务数据几乎是一致的,因而可以将写入数据的命令发送给主机执行,而读取数据的命令发送给不同的从机执行,从而达到读写分离的目的。

整体

首先是我们自己先创建三个文件

[root@Aw opt]# mkdir -p /opt/redis/data
[root@Aw opt]# mkdir -p /opt/redis/log
[root@Aw opt]# mkdir -p /opt/redis/conf

再把配置文件拷贝conf文件夹中

[root@Aw redis-6.2.1]# cp redis.conf /opt/redis/conf/

修改配置文件,同时将配置文件改名 并为全局配置

[root@Aw conf]# mv redis.conf redis-common.conf
[root@Aw conf]# vim redis-common.conf 
#bind 127.0.0.1 -::1 注释

protected-mode no 保护关掉

#port 6379 端口号注释

daemonize yes 后台启动开启

#pidfile /var/run/redis_6379.pid 私有的文件注释

#logfile "" 日志注释掉

rdb持久化缓存打开
save 3600 1
save 300 100
save 60 10000

#dbfilename dump.rdb 文件名注释

dir /opt/redis/data  数据目录换成自己的

masterauth root 从服务器访问主服务器的密码
requirepass root 访问主服务器的密码

在创建三个单独的配置文件

[root@Aw conf]# touch redis-6379.conf
[root@Aw conf]# touch redis-6380.conf
[root@Aw conf]# touch redis-6381.conf

每个配置文件中添加配置

#引用共用配置
include /opt/redis/conf/redis-common.conf
#进程编号记录文件
pidfile /var/run/redis-6379.pid
#进程端口号
port 6379
#日志记录文件
logfile "/opt/redis/log/redis-6379.log"
#数据记录文件
dbfilename dump-6379.rdb
#追加文件名称
appendfilename "appendonly-6379.aof"
#下面的配置无需在6379里配置
#备份服务器从属6379推荐配置配局域网IP
slaveof 192.168.26.146 6379

配置完成之后 开启三个不同的服务

[root@Aw bin]# redis-server /opt/redis/conf/redis-6379.conf 
[root@Aw bin]# redis-server /opt/redis/conf/redis-6380.conf 
[root@Aw bin]# redis-server /opt/redis/conf/redis-6381.conf

查看进程情况

[root@Aw bin]# ps -ef|grep redis
root       2318      1  0 20:10 ?        00:00:00 redis-server *:6379
root       2332      1  0 20:10 ?        00:00:00 redis-server *:6380
root       2339      1  0 20:11 ?        00:00:00 redis-server *:6381
root       2346   1701  0 20:11 pts/0    00:00:00 grep --color=auto redis

我们创建三个新窗口
在这里插入图片描述
查看当前服务状态 这个是主服务器

127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.26.146,port=6380,state=online,offset=434,lag=0
slave1:ip=192.168.26.146,port=6381,state=online,offset=434,lag=0
master_failover_state:no-failover
master_replid:b84927bc0c30f7eab03ed0c0e6f3f715388f634f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:434
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:434

这是子服务器

127.0.0.1:6380> info replication
# Replication
role:slave
master_host:192.168.26.146
master_port:6379
master_link_status:up
master_last_io_seconds_ago:7
master_sync_in_progress:0
slave_repl_offset:448
slave_priority:100
slave_read_only:1
connected_slaves:0
master_failover_state:no-failover
master_replid:b84927bc0c30f7eab03ed0c0e6f3f715388f634f
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:448
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:448

我们在主服务器中设置一个set

127.0.0.1:6379> set name aw
OK

我们可以在子中获取到

127.0.0.1:6381> get name
"aw"

但是不能在子中设置set,因为我们并没有开启,我们的目的就是让他们实现读写分离。

127.0.0.1:6381> set age 10
(error) READONLY You can't write against a read only replica.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值