文章目录

  • 概述
  • 主从同步
  • Redis主从同步配置
    • 主服务器
    • 从服务器
  • Redis主从同步过程
  • 缺点

概述

尽管 Redis 的性能很好,但是有时候依旧满足不了应用的需要,比如过多的用户进入主页,导致 Redis 被频繁访问,此时就存在大量的读操作。显然单靠一台 Redis 服务器是完全不够用的 当主服务器不能正常工作的时候,我们希望从服务器代替原来的主服务器,作为灾备,以保证系统可以继续正常的工作 。


主从同步

所谓主从架构设计的思路大概是:

  • 在多台数据服务器中,只有一台主服务器,而主服务器只负责写入数据,不负责让外部程序读取数据。
  • 存在多台从服务器,从服务器不写入数据,只负责同步主服务器的数据,并让外部
    程序读取数据。
  • 主服务器在写入数据后,即刻将写入数据的命令发送给从服务器,从而使得主从数
    据同步。
  • 应用程序可以随机读取某一台从服务器 的数据, 这样就分摊了读数据的压力。
  • 当从服务器不能工作的时候,整个系统将不受影响: 当主服务器不能工作的时候,
    可以方便地从从服务器中选举一台来当主服务器 。

这只是一种大概的思路, 每一种数据存储的软件都会根据其自身的特点对上面的这几点思路加以改造,但是万变不离其宗 , 只要理解了这几点就很好理解 Redis 的复制机制。

这个时候读数据就可以随机从从服务器上读取,当从服务器是多台的时候,那么单台服务器的压力就大大降低了,这十分有利于系统性能的提高, 当主服务器出现不能工作的情况时,也可以切换为其中的一台从服务器继续让系统稳定运行,所以也有利于系统运行的安全性。当然由于 Redis 自身具备的特点,所以其也有实现主从同步的特殊方式。


Redis主从同步配置

对 Redis 进行主从同步的配置分为主机与从机,主机是一台,而从机可以是多台 .

主服务器

首先,明确主机。当你能确定哪台机子是主机的时候,关键的两个配置是 dir和dbfilename 选项, 当然必须保证这两个文件是可写的。

对于 Redis 的 默认配置而言, dir 的默认值为“./”,而对于 dbfilename 的默认值为“ dump.rbd ”。换句话说,默认采用 Redis当前目录的 dump.rbd 文件进行同步。

对于主机而言,只要了解这多信息,很简单 。


从服务器

其次 , 在明确了从机之后,进行进一步配置所要关注的只有 slaveof这个配置选项,它的配置格式是 :

slaveof server port

其中 server 代表主机,port代表端口。

当从机 Redis 服务重启 时,就会同步对应主机的数据了。当不想让从机继续复制主机的数据时,可以在从机的 Redis 命令客户端发送slaveof no one 命令,这样从机就不会再接收主服务器的数据更新了。

又或者原来主服务器已经无法工作了,而你可能需要去复制新的主机,这个时候执行 slaveof sever port 就能让从机复制另外一台主机的数据了。

在实际的 Linux 环境中,配置文件 redis.conf 中还有一个 bind 的配置 , 默认为 127 .0 .0.1,也就是只允许本机访 问 ,把它修改为 bind 0.0.0.0,其他的服务器就能够访 问了 .


Redis主从同步过程

  1. 无论如何要先保证主服务器的开启,开启主服务器后,从服务器通过命令或重启配置项可以同步到主服务器。
  2. 当从服务器启动时,读取同步的配置,根据配置决定是否使用当前数据响应客户端,然后发送 SYNC 命令。当主服务器接收到同步命令的时候,就会执行 bgsave 命令备份数据,但是主服务器并不会拒绝客户端的读/写,而是将来自客户端的写命令写入缓冲区 。从服务器未收到主服务器备份的快照文件的时候,会根据其配置决定使用现有数据响应客户端或者拒绝。
  3. 当 bgsave 命令被主服务器执行完后,开始向从服务器发送备份文件,这个时候从服务器就会丢弃所有现有的数据,开始载入发送的快照文件。
  4. 当主服务器发送完备份文件后,从服务器就会执行这些写入命令。此时就会把bgsave 执行之后的缓存区内的写命令也发送给从服务器,从服务完成备份文件解析,就开始像往常一样,接收命令,等待命令写入。
  5. 缓冲区的命令发送完成后,当主服务器执行一条写命令后,就同时往从服务器发送同步写入命令,从服务器就和主服务器保持一致了。而此时当从服务器完成主服务器发送的缓冲区命令后,就开始等待主服务器的命令了。

以上 5 步就是 Redis 主从同步的过程。

只是在主服务器同步到从服务器的过程中,需要备份文件,所以在配置的时候一般需要预留 一些内存空间给主服务器,用以腾出空间执行备份命令。 一般来说主服务器使用50%~65%的内存空间 ,以为 主从复制留下可用的内存空间。


缺点

主从切换技术的方法是: 当主服务器右机后,需要手动把一台从服务器切换为主从服务器,这就需要人工干预,既费时费力,汪会造成一段时间内服务不可用,更多的时候,我们优先考虑Redis的哨兵模式。

Redis-18Redis主从同步相关推荐

  1. redis mysql主从同步_手撕Redis,主从同步

    原标题:手撕Redis,主从同步 一.主从同步的工作原理 redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令.无论是第一次连接还是重新连接,mast ...

  2. Redis搭建主从同步流程及原理

    目录 一.关于 Redis 主从复制 1.1 关于 Redis 的主从复制 1.2 Redis 主从架构 1.3 优缺点 二.配置 Redis 主从复制 2.1 准备事项 2.2 同步服务器的时区和时 ...

  3. Redis(九):Redis的主从同步

    1. 主从同步     1.1 初次全同步     1.2 命令传播 2. 断线后重复制     2.1 旧版重复制功能     2.2 新版重复制功能 3. 主从同步的一致性分析 redis中,用户 ...

  4. Redis的主从同步 - 邱乘屹的个人技术博客

    Redis的主从同步 redis主从原理 一.复制过程 二.数据间的同步 psync 命令需要 3 个组件支持: 主从节点各自复制偏移量: 主节点复制积压缓冲区: 主节点运行 ID: 如果在重启时不改 ...

  5. redis的主从同步及高可用集群

    redis 是一个高性能的 key-value 数据库. redis 的出现,很大程度补偿了 memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很 好的补充作用.它 ...

  6. Redis之主从同步

    为什么需要主从同步 生产环境中,如果redis只有一台机器是一件很危险的事情,如果出现机器宕机服务将处于不可用状态,此时需要对挂掉的节点进行重启和等待数据恢复后,服务方可继续对外使用, 如果有了主从以 ...

  7. redis mysql主从同步_Redis主从数据库同步

    Redis主从同步原理-SYNC 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以 ...

  8. 六、redis主从同步

    参考Redis 的主从同步,及两种高可用方式 010.Redis 主从架构搭建及原理详解 一.介绍 1.简介 redis的主从就是多台redis的数据保持一致.redis主服务器可写入和读取,从服务器 ...

  9. Redis主从架构:主从同步和哨兵机制

    Redis主从架构:主从同步和哨兵机制 一. Redis主从架构 二. 主从同步 2.1 引入 2.2 原理 (1) 全量同步 (2) 增量同步 (3) 优化Redis主从集群 2.3 总结 三. 哨 ...

  10. Redis主从配置(主从同步)

    主从简介 1.主从 – 用法 像MySQL一样,redis是支持主从同步的,而且也支持一主多从以及多级从结构. 主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的SORT就可以由从 ...

最新文章

  1. 调制的缺点_什么限制了光模块内调制的性能?
  2. 13.8 线程的安全问题和解决方法
  3. 参数(条件表)灵活配置GS01/GS02/GS03
  4. cf1562E. Rescue Niwen!
  5. 最佳实践 | 数据库迁云解决方案选型 流程全解析
  6. 远程桌面服务器office版本,在启用远程桌面服务的计算机上部署 Office 2010
  7. 疑似小米10超大杯入网:搭载骁龙865+/120Hz高刷屏加持
  8. mikadonic-RHCE——NFS服务配置图解
  9. 效率源希捷硬盘远程维修案例-K9K10盘写认流程
  10. 【KDD20】主题模型在图模型中的应用专题
  11. wget下载网络图片
  12. 51单片机项目教程c语言版,51单片机项目教程(C语言版)
  13. Spark机器学习解析
  14. lbj学习日记 07 函数基础
  15. (PDF目录)自动生成PDF书签目录
  16. Spring Boot微服务API网关
  17. PLC工程师求职面试问题有哪些?
  18. 老王卖西瓜python_python 老王装货
  19. VB中如何声明及使用多维数组,多层数组及动态数组
  20. DAY 4 | 自学前端第四天

热门文章

  1. linux集群巡检,Linux巡检
  2. python中shift_python对列进行平移变换的方法(shift)
  3. c++可视化开发_页面可视化配置搭建工具技术要点
  4. 23. Leetcode 86. 分隔链表 (链表-基础操作类-分隔链表)
  5. 多进程多线程处理文本数据
  6. MATLAB从入门到精通-Simulink模块连续模块之积分(Continuous-Integrator)
  7. MATLAB从入门到精通-matlab中符号推导应用及相关技巧
  8. matlab破损皮革定位,皮革下料
  9. xss绕过字符过滤_XSS过滤器绕过总结
  10. 虚拟鼠标代替安卓触屏_iQOO对比黑鲨2:那个虚拟按键设计更好?