知识点

相关文章

更多

最近更新

更多

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

2019-03-18 00:08|来源: 网路

主从复制的好处:
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"


书生参考网络整理


redis知识点

redis快速入门

reids常用命令

redis数据结构

java_API_客户端

Jedis

Tlcache

redis_持久化

AOF

RDB

发布订阅(pub/sub)

redis_事件

redis事务

redis通讯协议

RESP(Redis Serialization Protocol)

redis高可用

redis哨兵

监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)

redis主从复制

  • 复制模式

    1. 主从复制
    2. 从从复制
  • 复制过程

    • slave向master发送sync命令;
    • master开启子进程执行bgsave写入rdb文件;
    • master发送缓存和RDB文件给slave;
    • master发送数据发送给slave完成复制;

redis集群(Redis_Cluster)

相关问答

更多
  • 读写分离顾名思义,读和写是分开的。一般数据库压力在于读,搭建主从可以让主库写,从库读,可以减少I/O竞争,提高性能。主要概括为3点: 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。
  • 作用是复制一个与当前进程一样的进程,新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,也称为原进程的子进程。
  • 应用Redis实现数据的读写,同时利用队列处理器定时将数据写入mysql。 同时要注意避免冲突,在redis启动时去mysql读取所有表键值存入redis中,往redis写数据时,对redis主键自增并进行读取,若mysql更新失败,则需要及时清除缓存及同步redis主键
  • redis主从复制 redis主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.33.130 6379 主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。 redis复制过程如下: 1、slave server启动连接到master server之后,salve server主动发送SYNC命令给master ser ...
  • redis主从复制 和Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。 全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下: - 从服务器连接主服务器,发送SYNC命令; - 主服务器接收到SYNC命名后,开始执行B ...
  • redis主从复制总结整理 主题 Redis Redis的主从复制策略是通过其持久化的rdb文件来实现的,其过程是先dump出rdb文件,将rdb文件全量传输给slave,然后再将dump后的操作实时同步到slave中。让从服务器(slave server)成为主服务器(master server)的精确复制品。官方文档ReplicationHowto中提到以下特点: 一个master支持多个slave,slave可以接受其他slave的连接,作为其他slave的master,从而形成一个master-sl ...
  • 读写分离顾名思义,读和写是分开的。一般数据库压力在于读,搭建主从可以让主库写,从库读,可以减少I/O竞争,提高性能。主要概括为3点: 1.增加冗余 2.增加了机器的处理能力 3.对于读操作为主的应用,使用读写分离是最好的场景,因为可以确保写的服务器压力更小,而读又可以接受点时间上的延迟。
  • 从目的上来说都是减小服务器压力,运转效率更高,也更有利于信息的管理 区别在于 读写分: 是一个表只负责向前端展示数据,后台管理人员对数据库表进行的增删改会在另一个表里,把这两个表给他分开,各管各的,这就是读写分离 主从复制:一般就是一个表在增删改之后会及时更新到另外一个表里,保证他两数据室一样的
  • redis主从复制 redis主从配置比较简单,基本就是在从节点配置文件加上:slaveof 192.168.33.130 6379 主要是通过master server持久化的rdb文件实现的。master server 先dump出内存快照文件,然后将rdb文件传给slave server,slave server 根据rdb文件重建内存表。 redis复制过程如下: 1、slave server启动连接到master server之后,salve server主动发送SYNC命令给master ser ...
  • 1. client在一个连接中发出multi命令时, 2. 这个连接会进入一个事务上下文, 3. 该连接后续的命令不会立即执行, 4. 而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令!