一.序言

现在只要中间件 分布式什么的都要涉及主从来提高读的性能,这里根据官网的说明介绍一些内容给大家,我就不全部翻译了,英文好了直接看原文吧。地址:http://redis.io/topics/replication

二.基本介绍

1.redis 不仅支持master-slave  的复制,同时也支持slave-slave 的复制。

2.如果master 的持久化关闭之后,在多slave 复制的时候,如果有重启之类的,会出现数据不一致的其概况。

三.基本配置

1.配置很简单,我这里配置的单机的,用端口区分。先打开先前的配置

2.用命令复制一份redis.conf 做为slave 的配置文件

# 注意自己的文件位置
# 这里如果简单,你可以不用配置文件,直接通过redis-server --port 10001 方式创建
$ cp redis.conf  redis-10001.conf

3.更改redis-10001.conf 的端口

$ vi redis-10001.conf# 将port 6379 改成 10001 

4. 启动slave

$ redis-server /usr/local/etc/redis-10001.conf

5.连接10001 端口,指定他为slave

$ redis-cli -p 10001
127.0.0.1:10001> PING
PONG
127.0.0.1:10001> slaveof localhost 6379
OK

四.测试

分别打开master 和 slave的窗口,在master 存放,slave 获取

master 执行

$ redis-cli -p 6379
127.0.0.1:6379> set testkey hello
OK

slave 执行

$ redis-cli -p 10001
127.0.0.1:10001> get testkey
"hello"

结果:master 存放的值,slave 已经获取到了。当然,默认slave 是只读的,可以通过配置改变。

更多配置

五.实现步骤

1.设置或者启动slave 的时候,会发送SYCN命令,无论是第一次连接或者重新连接

2.msater 收到后,开始后台saving,然后缓存接收到的所有修改数据的命令。

3.saving 完成之后,会将saving 的文件,传输给slave

4.slave 收到文件后,会清空以前的,并从新加载数据

5.后面master 和slave 就是异步同步,比较时时了

6.2.8 以后,slave断掉之后,会从连master,然后部分同步,时间可以设置

部分同步原理:

1.master那边会创建一个内存缓冲区,记录最近的命令

2.每次复制master 和slave 都会有一个偏移量记录,和一个(master run id

3.当连接断开,salve会从新请求连接,如果master run id 相同,并且偏移量位置可用,那么就会继续上次的进行复制,如果不同,这就类似于第一次连接,全量复制

其他:全量复制,或者说第一次复制,如果数据过大,或导致slave 时间很长不可用。

小结:

1.这里简单描述了下redis 读写分离的东西,但是这个虽然可以用性很高,但是有始终有一些遗漏 或者不同步的问题,遇坑的时候希望大家多分享~。~

2.上面的master 是没加用户名和密码的,加了连接的时候需要注意加

3.如果描述有错的地方,请指出,非常感谢!

redis maser-salve相关推荐

  1. Redis-入门学习笔记

    一.背景 1.1 分布式数据库的原理CAP+Base 1.1.1 CAP原理 C-Consistent 一致性 A-Availability 可用性 P-Partition tolerance 分区容 ...

  2. redis主从复制原理、断点续传、无磁盘化复制、过期key处理

    1.主从架构的核心原理: 当启动一个salve node时会发送PSYNC 命令到master. salve第一次连接master时master会根据当前数据复制一份RDB(full resynchr ...

  3. 聊聊Redis的各种集群方案、及优缺点对比

    在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要有一台 ...

  4. 阿里二面:Redis有几种集群方案?我答了4种

    背景 在服务开发中,单机都会存在单点故障的问题,及服务部署在一台服务器上,一旦服务器宕机服务就不可用,所以为了让服务高可用,分布式服务就出现了,将同一服务部署到多台机器上,即使其中几台服务器宕机,只要 ...

  5. Redis占用内存过高怎么办

    目录 前言 案例现象 定位问题 内存回收策略 键过期机制 slave的过期策略 解决问题 前言 我们知道,Redis是一个key-value数据库,它的数据是运行在内存中的 其读写效率比将数据存储到磁 ...

  6. REDIS哨兵【Sentinel】模式+哨兵的核心知识点+redis哨兵主从切换的数据丢失问题+上一章铺垫的【异步复制数据丢失问题】+【集群脑裂】

    1.redis哨兵模式的前言: 一年一度的问题来了,为啥子要用redis的哨兵模式的呢? 简单粗暴的理解下子,顺带开个玩笑,没有理解好,还望不要见笑: 其实redis的哨兵模式,个人理解:只是说法搞大 ...

  7. Redis集群搭建(Cluster 集群模式,分片集群)

    Redis集群搭建Cluster 集群模式 引言 Redis的集群介绍 搭建方法 创建集群 其他服务的搭建 引言 redis相信大家不陌生,是最常用的缓存解决方案了.但是,在服务开发中,单机都会存在单 ...

  8. Redis——学习之路四(初识主从配置)

    首先我们配置一台master服务器,两台slave服务器.master服务器配置就是默认配置 端口为6379,添加就一个密码CeshiPassword,然后启动master服务器. 两台slave服务 ...

  9. redis sentinel集群配置及haproxy配置

    ip分布情况: sentinel-1/redis 主 10.11.11.5 sentinel-2/redis 从 10.11.11.7 sentinel-3/redis 从 10.11.11.8 ha ...

  10. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

最新文章

  1. 推荐几本Python电子书
  2. java xml 实体类_XML和JAVA实体类的相互转化(微信例子)
  3. 【CodeForces - 706C】Hard problem(dp,字典序)
  4. HTCondor运行Java文件
  5. div css左边固定右边自适应布局
  6. python不会英语不会数学怎么自学-26岁了,自学Python怎么样?
  7. oracle用哪个用户创建表空间,Oracle用定名创建表空间和用户
  8. 给大家推荐一本书啊啊~
  9. 灵格斯 Lingoes 2.8 去广告 禁止新词锐词弹窗
  10. Image-Guided Navigation of a Robotic Ultrasound Probe for Autonomous Spinal Sonography Using a
  11. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭
  12. 成为IT精英,我奋斗7年(震撼!正能量 转)
  13. C#,动态规划问题中基于单词搜索树(Trie Tree)的单词断句分词( Word Breaker)算法与源代码
  14. ECharts绘制饼图
  15. 180度舵机使用经验
  16. Django和Flask区别
  17. 以太网口差分电平_百兆以太网接口高速PCB布局布线指南
  18. Java length() 方法、length 属性和 size() 方法有什么区别?
  19. 微信支付出现的错误提示及解决方法
  20. Pytorch之Rot旋转

热门文章

  1. 在嵌入式linux上玩OpenGL
  2. android 黑白色主题、滤镜效果(公祭日、追悼日)
  3. 下载了免费的txt电子书,如何用IOS苹果手机打开?
  4. C# VS2017中Windows窗体更改图标
  5. 解决mac终端放大字体重启又变小了
  6. html 实时计算字数,JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决...
  7. 如何修改Linux的锁屏时间,调整Kali Linux的锁屏时间
  8. Ubuntu 20.04.2.0 LTS 下安装Geany 1.36的命令列表
  9. scaner 从外网到内网域渗透
  10. 自动驾驶仿真软件SCANeR studio(三)terrain地形模式