广告
返回顶部
首页 > 资讯 > 数据库 >Redis的主从同步解析
  • 374
分享到

Redis的主从同步解析

主从Redis 2022-06-04 17:06:02 374人浏览 薄情痞子
摘要

一、Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断

一、Redis主从同步原理

1.1 Redis主从同步的过程

配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断开后的重新连接,master都会启动一个后台进程,将数据库快照保存到文件中.同时master主进程会开始收集新的写命令并缓存起来。当后台进程完成写文件后,master就将快照文件发送给slave,slave将文件保存到磁盘上,然后加载到内存将数据库快照恢复到slave上。slave完成快照文件的恢复后,master就会把缓存的命令都转发给slave,slave更新内存数据库。后续master收到的写命令都会通过开始建立的连接发送给slave。从master到slave的同步数据的命令和从 client到master发送的命令使用相同的协议格式。当master和slave的连接断开时,slave可以自动重新建立连接。如果master同时收到多个slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave。

1.2 Redis主从同步的特点

主从同步具有明显的分布式缓存特点,主要包括这些方面:

1)一个master可以有多个slave,一个slave也可以有多个slave;
2)slave不仅可以连接到master,slave也可以连接其他slave形成树状结构;
3)主从同步不会阻塞master,但是会阻塞slave。也就是说当一个或多个slave与master进行初次同步数据时,master可以继续处理client发来的请求。相反slave在初次同步数据时则会阻塞不能处理client的请求;
4)主从同步可以用来提高系统的可伸缩性,我们可以用多个slave专门处理client的读请求,也可以用来做简单的数据冗余或者只在slave上进行持久化从而提升集群的整体性能。

1.3 Redis主动同步设置方法

有两种方式可以用来完成进行主从Redis服务器的同步设置。都需要针对slave服务器上进行,指定slave需要连接的Redis服务器(可能是master,也可能是slave)。

1.3.1 在配置文件中设置

在作为slave的Redis服务器的配置文件(redis.conf)中设置。

Conf代码


slaveof 10.1.1.102 6379 #指定master的ip和端口

很明显,这种设置方式非常简单,但是需要修改配置文件,并且配置文件是在服务器启动时加载的。所以服务器不启动无法修改,操作不灵活。

这种配置方式适合于作为部署时的初始配置。

1.3.2 在Redis客户端中进行设置

这里以Redis官方推荐的Jedis为例来说明,后文中的测试也基于Jedis来进行。这里jedis对象实例是属于slave的,参数是服务器的地址和端口。

Java代码


slaveJdedis.slaveOf("10.1.1.102", 6379); #指定master的ip和端口 
slaveJdedis.slaveofNoOne(); #取消指定master,自己成为一个master了

通过客户端指定的方式,可以方便的修改master和slave服务器的主从关系。所以这种方式非常适合于根据需要在线调整master和slave服务器。

1.3.3 当前主从同步存在的问题

由于master和slave服务器的不是Redis自动选举产生,需要人工参与,因此主从倒换无法自动完成。这样就存在一个问题,什么时候以及由谁来触发倒换。我看了下客户端是没有这个能力的,一定要的话需要自己增加。

Jedis目前随机选择读取的哪台Redis服务器,因此实现自动分布式读取我们需要对Jedis做二次封装。

1) 需要开发一种机制,尽快检测到master和slave的工作状态;
2) 需要定义一种master和slave的自动切换策略;
3) 需要定义一种可以随机读取任何一台Redis服务器的机制;

这些功能都可以在客户端实现,不过效果不会太好。如果服务器自身能够支持就比较完美了,不过从Redis官网的介绍情况来看,好像目前还没有看到有人提这样的需求,也没有这样的规划。

二、Redis主流客户端介绍

在Redis的官方网站,列出了5款Redis的java客户端软件。其中Jedis是Redis官方推荐的java客户端,这款一直有维护并更新。目前服务器最新稳定版本是Redis2.4.17,最新的测试版本Redis 2.6.0 RC7。

2.1 Jedis

Jedis是Redis官方推荐的Java客户端版本。目前最新为Jedis 2.1.0-5版本,完全兼容Redis 2.0.0版本。这个客户端一直都有维护和更新。

2.2 JRedis

JRedis之前很长一段时间没有更新,可以完全兼容Redis 2.0.0版本。今天5月份前做过更新后可以兼容最新的Redis2.6.0测试版本。

2.3 JDBC-Redis

JDBC-Redis是用于Redis这个NoSQL数据库的JDBC驱动。只能下载到2009年3月发布的jdbc-redis_0.1_beta版本,目前已经无人维护了。

2.4 RJC

RJC提供Apache DBCP风格的连接池。1年前已经停止更新,可以完全兼容Redis 2.0.0版本。

2.5 redis-protocol

这个更新是最快和最频繁的,可以兼容最新的Redis 2.6.0版本。不过它定位于完整支持Redis协议,更加高效和Redis服务器进行数据交互。所以,并没有充分发挥redis服务器的功能。

2.6 各个Java客户端总体评价

整体来讲,各个客户端基本都实现了Redis协议协议定义的基本功能。Redis-protocol更新最近对Redis协议的支持最完整;Jedis提供对Redis服务器的更多配置操作,使用起来是最方便的。其他客户端都很少维护,功能也是一般。

如果要少量扩展客户端的功能,基于Jedis来做开发是最快捷的。

如果要最大限制兼容和扩展客户端的功能,基于Redis-protocol是最好的选择。

三、Redis主从同步的使用建议

Redis主从同步在目前所有的Java客户端都支持不好。主要原因应该还是Redis服务器本身的实现机制限制导致的。如果一定要做也是可能的,不过效果可能会打折扣。

3.1 通过封装Jdedis来实现

1)新增一个管理类,负责维护Redis服务器集群的服务器拓扑关系;
2)新增一个监测类,负责监测和维护Redis服务器集群中的服务器运行状态;
3)新增一个Master选择策略类,负责确定master和slave的切换时机,并选择最合适的Redis服务器充当master。
4)新增一个代理类,接管当前的Jedis客户端对Redis服务器的读写操作。应用层通过代理类来使用Jedis客户端。代理类需要保证Redis服务器集群对应用层透明。

总结

以上就是本文关于Redis的主从同步解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java编程redisson实现分布式代码示例、redis中事务机制及乐观锁的实现等,有什么问题可以随时留言,小编一定知无不言言无不尽。感谢朋友们对本站的支持!

您可能感兴趣的文档:

--结束END--

本文标题: Redis的主从同步解析

本文链接: https://www.lsjlt.com/news/11785.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis的主从同步解析
    一、Redis主从同步原理 1.1 Redis主从同步的过程 配置好slave服务器连接的master后,slave会建立和master的连接,然后发送sync命令。无论是第一次同步建立的连接还是连接断...
    99+
    2022-06-04
    主从 Redis
  • Redis主从同步的详细解析
    这篇文章主要讲解了Redis主从同步的详细解析,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。一、Redis主从同步原理1.1 Redis主从同步的过程配置好slave服务器连接...
    99+
    2022-10-18
  • Redis主从同步原理解析(实验)
    redis主从同步原理        在主从数据同步过程中,        master只在第一次同步时创建了RDB文件,用此做基础进行同步。        之后的同步,都是通过增量传输命令的方式(AOF)...
    99+
    2022-10-18
  • redis主从同步配置
    这篇文章给大家介绍redis主从同步配置,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一丶主从概念 一个master可以拥有多个slave,一个slave又可以拥有多个slave,如此下去,形成了强大的多级服...
    99+
    2023-06-06
  • Redis中主从同步机制的示例分析
    小编给大家分享一下Redis中主从同步机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!之前的文章中详细分析了redi...
    99+
    2022-10-19
  • redis怎么实现主从同步
    redis怎么实现主从同步?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。Redis主从复制可以根据是否是全量分为全量同步和增量同步。1 全量同步Redis...
    99+
    2022-10-18
  • redis主从同步策略有哪些
    Redis主从同步策略有以下几种:1. 全量复制:主节点将整个数据库的数据发送给从节点,从节点清空原有数据,然后将接收到的数据进行加...
    99+
    2023-08-30
    redis
  • redis主从同步与读写分离
    一、原理Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面是关于redis主从复制的一些特点:...
    99+
    2022-10-18
  • Mysql 主从同步原理简析
    在开始讲述原理的情况下,我们先来做个知识汇总,究竟什么是主从,为什么要搞主从,可以怎么实现主从,mysql主从同步的原理1、什么是主从其实主从这个概念非常简单主机就是我们平常主要用来读写的服务,我们称之为master(主人、主宰)从机就是...
    99+
    2016-01-10
    Mysql 主从同步原理简析
  • mysql主从同步
    #!/bin/bash . /etc/rc.d/init.d/functions if [ $# -ne 0 ];then    echo "Usage:sh `basename $0`"    exit 1 fi #MASTER V...
    99+
    2017-01-13
    mysql主从同步
  • mariadb主从同步
    本文是搭建的mariadb-10.0.17版本的下载地址:https://downloads.mariadb.org/interstitial/mariadb-10.0.17/source/mariadb-...
    99+
    2022-10-18
  • MySQL 主从同步。
    Mysql 数据库安装: 服务器IP 地址规划:主服务器 IP 172.20.2.46 从服务器 IP 172.20.2.47 二、安装mysql服务器 1.将下载好的安装到解压到/usr/loca...
    99+
    2022-10-18
  • MySQL 主从同步
    一、概述     原理图如下:     功能: BinLog:二进制文件,存储MasterDB(主数据库)中修改数据的内容,存储内容的格式有Statement,Row,Mixed。 Relay Log:功能作用与Binl...
    99+
    2018-11-12
    MySQL 主从同步
  • Mysql——主从同步
    一、什么是Binlog Mysql的二进制日志可以是Mysql最重要的日志, 记录了所有的DDL和DML语句(除了数据查询语句之外的语句)语句,以事件形式记录,还包含语句所执行的消耗时间,Mysql的二进制日志是事务安全型的。 二进制日志包...
    99+
    2023-10-26
    mysql 数据库 sql
  • 如何理解Redis主从复制的全量和增量同步
    如何理解Redis主从复制的全量和增量同步,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 全量同步:1.sl...
    99+
    2022-10-19
  • MySQL主从同步的简单理解
    MySQL主从同步的简单理解 许多大型网站为了减轻海量用户对于服务器并发访问量的性能问题,会使用很多解决的方案, 数据库主从分离,就是目前主流的一种解决手段。 想一下每个用户都通过控制层业务层调用服务器...
    99+
    2022-10-18
  • redis单实例、多实例、主从同步实战
    【安装redis单实例实战】yum -y install gcc gcc-c++    #安装编译工具 cd /op...
    99+
    2022-10-18
  • 一篇文章让你明白Redis主从同步
    今天想和大家分享有关 Redis 主从同步(也称「复制」)的内容。 我们知道,当有多台 Redis 服务器时,肯定就有一台主服务器和多台从服务器。一般来说,主服务器进行写操作,从服务器进行读操作。 那么这里...
    99+
    2022-10-18
  • SVN-3:主从同步
    svnsync同步主:192.168.56.20主svn需要通过apache发布才能同步文件到备svn在备份svn新建sadoc项目,配置与主svn相同权限修改项目文件夹下hooks下面的pre_revprop-change内容只有exit...
    99+
    2023-01-31
    主从 SVN
  • Redis中主从架构数据一致性同步原理的示例分析
    这篇文章将为大家详细讲解有关Redis中主从架构数据一致性同步原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。高可用有两个含义:一是数据尽量不丢失,二是服务尽...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作