redis主从复制(读写分离)-redis集群管理

2016-07-18|来源:

主从复制的好处:
1、 避免redis单点故障
2、 构建读写分离架构,满足读多写少的应用场景


主从架构




[root@master redis]# mkdir redis-master-slave

创建6380、6381、6382三个目录,分别将安装目录下的redis.conf拷贝到这三个目录下(我直接从单机安装那里拷贝过来,因为我那里已人改过daemonize了)
[root@master redis]# cd redis-master-slave/
[root@master redis-master-slave]# mkdir 6380
[root@master redis-master-slave]# mkdir 6381
[root@master redis-master-slave]# mkdir 6382


[root@master redis-master-slave]# cp /opt/redis/redis-single/redis.conf 6380/

[root@master redis-master-slave]# cp /opt/redis/redis-single/redis.conf 6381/
[root@master redis-master-slave]# cp /opt/redis/redis-single/redis.conf 6382/


分别进入这三个目录,修改配置文件redis.conf,将端口分别设置为:6380(Master)、6381(Slave)、6382(Slave)。同时要设置pidfile文件为不同的路径。

以6380为例:
[root@master redis-master-slave]# vim 6380/redis.conf
......
port 6380
......
pidfile /var/run/redis_6380.pid
......


设置主从关系

在redis中设置主从有2种方式:
1、 在redis.conf中设置slaveof
a) slaveof <masterip> <masterport>
2、 使用redis-cli客户端连接到redis服务,执行slaveof命令
a) slaveof <masterip> <masterport>
第2种方式在重启后将失去主从复制关系。


本测试中使用第1种方式

[root@master redis-master-slave]# vim 6381/redis.conf
slaveof 127.0.0.1 6380
[root@master redis-master-slave]# vim 6382/redis.conf
slaveof 127.0.0.1 6380


分别启动三个redis实例:

[root@master redis-master-slave]# /usr/local/bin/redis-server /opt/redis/redis-master-slave/6380/redis.conf
[root@master redis-master-slave]# /usr/local/bin/redis-server /opt/redis/redis-master-slave/6381/redis.conf
[root@master redis-master-slave]# /usr/local/bin/redis-server /opt/redis/redis-master-slave/6382/redis.conf


查看路由信息

在主节点查
[root@master hadoop]# /usr/local/bin/redis-cli -p 6380
127.0.0.1:6380> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6381,state=online,offset=1,lag=1
slave1:ip=127.0.0.1,port=6382,state=online,offset=1,lag=1
master_repl_offset:1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:0


在从节点查

[root@master hadoop]# /usr/local/bin/redis-cli -p 6381
127.0.0.1:6381> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:10
master_sync_in_progress:0
slave_repl_offset:141
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0


[root@master hadoop]# /usr/local/bin/redis-cli -p 6382

127.0.0.1:6382> info replication
# Replication
role:slave
master_host:127.0.0.1
master_port:6380
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:155
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0


测试主从

在主库写入数据
127.0.0.1:6380> set k1 123
OK
127.0.0.1:6380> get k1
"123"


在从库读取数据

127.0.0.1:6381> get k1
"123"
127.0.0.1:6382> get k1
"123"


书生参考网络整理


相关问答

更多

23,redis如何实现主从复制

redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。 全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下: - 从服务器连接主服务器,发送SYNC命令; - 主服务器接收到SYNC命名后, ...

MySQL主从复制读写分离如何提高从库性能

读写分离顾名思义,读和写是分开的。一般数据库压力在于读,搭建主从可以让主库写,从库读,可以减少I/O竞争,提高性能。主要概括为3点: 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。

redis需要读写分离吗

首先说结论:这个要跟你具体的架构实现以及业务相关,常见的应用场景下我觉得redis没必要进行读写分离。 先来讨论一下为什么要读写分离: 读写分离使用于大量读请求的情况,通过多个slave分摊了读的压力,从而增加了读的性能。 过多的select会阻塞住数据库,使你增删改不能执行,而且到并发量过大时,数据库会拒绝服务。 因而通过读写分离,从而增加性能,避免拒绝服务的发生。 我认为需要读写分离的应用场景是:写请求在可接受范围内,但读请求要远大于写请求的场景。 再来讨论一下redis常见的应用场景: 缓存 ...

redis主从复制的延时怎么处理

应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键

redis主从复制最好采用哪种结构

redis主从复制总结整理 主题 Redis Redis的主从复制策略是通过其持久化的rdb文件来实现的,其过程是先dump出rdb文件,将rdb文件全量传输给slave,然后再将dump后的操作实时同步到slave中。让从服务器(slave server)成为主服务器(master server)的精确复制品。官方文档ReplicationHowto中提到以下特点: 一个master支持多个slave,slave可以接受其他slave的连接,作为其他slave的master,从而形成一个mast ...

专题教程

相关文章

更多

最近更新

更多