主从模式介绍

  Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。下图为级联结构。

  

主从同步过程

  Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下: 
  -  从服务器连接主服务器,发送SYNC命令; 
  -  主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 
  -  主服务器BGSAVE执行完后,向所有从服务器发送快照文件,并在发送期间继续记录被执行的写命令; 
  -  从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 
  -  主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令; 
  -  从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令;

  

主从模式搭建

  本例采用单例的1主2从的搭建方式。

  

服务类型 角色 IP地址 端口
Redis master 127.0.0.1 17007
Redis slave 127.0.0.1 17008
Redis slave 127.0.0.1 17009

  1、首先准备一个redis实例,参考【Redis】安装及简单使用

  2、准备一份主配置文件,端口是17007

 # 包含文件(redis-base.conf,文件从redis安装目录中拷贝的)
include /data/soft/redis-sentinel/redis-base.conf # 将redis-base.conf文件中,bind注释,需要在外网访问,将protected-model改为no
protected-mode no
6
# 端口
port 17007 # 后台运行
daemonize yes # pid文件
pidfile redis_17007.pid # 日志文件
logfile "/data/log/redis-sentinel-log/redis-17007-log/redis-17007.log" # 主认证密码
masterauth 123456 # 认证密码
requirepass 123456 # 最大内存10M,一般为机器内存的3/4
maxmemory 10mb # 内存达到最大时策略,可选择其他策略
maxmemory-policy volatile-lru # 目录
dir /data/soft/redis-sentinel/redis-17007/ # 快照文件
dbfilename dump-17007.rdb     

  3、准备一份从配置文件,端口是17008,17009,在主配置文件的基础上,修改相应配置,并加上以下2行

 # 从节点要跟随的主节点
slaveof 192.168.0.3 17007 # 主节点认证密码,如果设置了密码,就要设置
masterauth 123456

  4、目录结构如图:

    

  5、先启动主节点,然后启动从节点

    主节点启动命令:redis-5.0.5/src/redis-server redis-17007/redis-17007.conf

    从节点启动命令:redis-5.0.5/src/redis-server redis-17008/redis-17008.conf

  6、redis客户端链接主节点,查看信息

    命令:redis-5.0.5/src/redis-cli -c -h 192.168.0.3 -p 17007 -a 123456

    主节点信息:

 192.168.0.3:17007> INFO Replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.3,port=17008,state=online,offset=1373,lag=0
slave1:ip=192.168.0.3,port=17009,state=online,offset=1373,lag=1
master_replid:535c43ecbf009f8eae1930d52c2fc6149432b5ee
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1373
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1373

    从节点信息:

 192.168.0.3:17008> INFO Replication
# Replication
role:slave
master_host:192.168.0.3
master_port:17007
master_link_status:up
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:1261
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:535c43ecbf009f8eae1930d52c2fc6149432b5ee
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1261
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1261 

  7、测试,在主节点存入缓存,在从节点取出缓存

 192.168.0.3:17007> set foo bar
OK
192.168.0.3:17007> get foo
"bar"
192.168.0.3:17008> get foo
"bar"
192.168.0.3:17009> get foo
"bar"

  

【Redis】Redis 主从模式搭建的更多相关文章

  1. redis的主从模式搭建及注意事项

    前言:本文先分享下如何搭建redis的主从模式配置,以及主从模式配置的注意事项.后续会继续分享如何实现一个高可用的redis服务,redis的Sentinel 哨兵模式及集群搭建. 安装: 1,yum ...

  2. 实战录 | Redis的主从服务器搭建

    <实战录>导语 云端卫士<实战录>栏目定期会向粉丝朋友们分享一些在开发运维中的经验和技巧,希望对于关注我们的朋友有所裨益.本期分享人为云端卫士安全平台工程师田全磊,将带来Red ...

  3. 【Redis】Redis Sentinel 哨兵模式搭建

    Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...

  4. Redis进阶:Redis的哨兵模式搭建

    Redis进阶:Redis的哨兵模式搭建 哨兵机制介绍 单机版的Redis存在性能瓶颈,Redis通过提高主从复制实现读写分离,提高了了Redis的可用性,另一方便也能实现数据在多个Redis直接的备 ...

  5. redis(二)redis的主从模式和集群模式

    redis(二)redis的主从模式和集群模式 主从模式 集群模式 主从模式 redis的主从模式,指的是针对多台redis实例时候,只存在一台主服务器master,提供读写的功能,同时存在依附在这台 ...

  6. Redis docker 主从模式与哨兵sentinel

    更多技术记录,请参考软件开发 | 编程 | RustFisher 为实现redis的高可用,我们采用主从模式加哨兵的方法. 一主二从三哨兵,共启动6个redis容器.本文示例在同一个服务器上进行操作. ...

  7. 【Nginx】如何基于主从模式搭建Nginx+Keepalived双机热备环境?这是最全的一篇了!!

    写在前面 最近出版了<海量数据处理与大数据技术实战>,详情可以关注 冰河技术 微信公众号,查看<我的<海量数据处理与大数据技术实战>出版啦!>一文. 也有不少小伙伴 ...

  8. Redis哨兵(sentinel)模式搭建

    一.Sentinel介绍 之前骚了一波Redis的简介及应用场景,今天试了下他的哨兵模式: Sentinel是Redis的高可用性(HA)解决方案,由一个或多个Sentinel实例组成的Sentine ...

  9. 深入剖析Redis系列: Redis集群模式搭建与原理详解

    前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...

随机推荐

  1. 《hello-world》第九次团队作业:Beta冲刺与验收准备

    项目 内容 这个作业属于哪个课程 2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十三 团队作业9:Beta冲刺与团队项目验收 团队名称 <hello--wor ...

  2. 大马过安全狗拿webshell方法

    很多拿站的朋友,都知道大马很多都会被安全狗拦截,最近一个大牛给我一个方法,竟然成功,所以分享下这个方法. 将大马写到一个txt文件里面,命名为dama.txt,再建一个文本文档,asp的就写入:< ...

  3. Hbase节点及原理

    1.Hbase架构:Clinet.Zookeeper.Master.RegionServer.Region.Store.MemStore.HLog 1.读过程 2.写过程 https://www.cn ...

  4. SPA项目开发--表单验证、增删改

    1. 表单验证 Form组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,   并将Form-Item的prop属性设置为需校验的字段名即可      <el-form- ...

  5. Validation参数验证

    在SpringBoot项目中其实已经默认引入了,如果不是sprongBoot项目则需要导入Maven <dependency> <groupId>org.hibernate.v ...

  6. Oracle NVL 函数 nvl nvl2

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  7. Centos 7 安装 dotnet 环境

    Centos 7 安装  dotnet 环境 下载官方 rpm yum 源 直接 yum install 安装rpm -Uvh https://packages.microsoft.com/confi ...

  8. Day12:H5

    掌握HTML+CSS+JavaScript相关知识 了解HTML5的结构标签: 掌握新增和删去的标签及相关属性 运用HTML5相关知识进行实际开发 下面哪种语法中是对大小写进行区分的? XHTML H ...

  9. GoCN每日新闻(2019-09-25)

    GoCN每日新闻(2019-09-25) 1. Go module 再回顾 https://colobu.com/2019/09/23/review-go-module-again/2. 如何灵活地进 ...

  10. 割点 —— Tarjan 算法

    由于对于这一块掌握的十分不好,所以在昨天做题的过程中一直困扰着我,好不容易搞懂了,写个小总结吧 qwq~ 割点 概念 在无向连通图中,如果将其中一个点以及所有连接该点的边去掉,图就不再连通,那么这个点 ...