Redis主从复制问题和扩容问题的解决思路

 更新时间:2014年06月04日 08:59:50   作者:  
这篇文章主要介绍了Redis主从复制问题和扩容问题的解决思路,其中扩容问题的解决思路来自Redis作者,需要的朋友可以参考下

一、解决主从复制问题

当使用Redis作为存储引擎的时候,并且使用Redis读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主机会生成内存快照,主机依然可以对外提供服务,但是作为读的从机,就无法提供对外服务了,如果数据量大,恢复的时间会相当的长。为了解决Redis主从Copy的问题,有如下两个解决方案:

主动复制
所谓主动复制,就是业务层双写多个Redis,避开Redis自带的主从复制。但是自己干同步,就会产生一致性问题,为了保证主从一致,需要加入一系列的验证机制。而且这样的做法,会降低系统性能。
修改源代码,支持增量同步
Redis写AOF文件,关闭Redis rewrite AOF文件功能,为了避免文件过大,可以自己实现文件分割功能。
在业务低峰时期,生成内存快照,并记录快照时刻AOF所在的点。
当从机重连的时候,从机发送同步命令给主机,主机收到命令后,把最新的快照文件发送给从机,从机从快照文件中恢复,并且获得了该快照对应的AOF点,从机将AOF点发送给主机,主机将AOF文件中该点之后的所有数据操作同步给从机,达到增量同步的效果。

二、解决扩容问题

Redis作者的思路是:Redis Presharding(http://oldblog.antirez.com/post/redis-presharding.html)

预算设定Redis instances数量,假设实例数量n,n = 机器数*单台机器redis实例数
后期扩展只需要将旧机器上的部分redis实例迁移到新的机器上,达到平滑扩容。
迁移步骤如下:

在新的机器上创建实例,并且每个实例设置为被迁移实例的从机。
主从复制完成之后,设置程序将新的实例作为主。
停止旧的实例
经过如上步骤之后,旧机器的内存就变大了,最后内存最大为每台机器一个Redis实例。

按作者文章中所说的,一个机器启动多个实例,其实并不会耗费太多资源,因为Redis够轻量,另外多个实例一个接一个的重写AOF文件或者生成内存快照,可以降低内存的占用,而不影响对外的服务。

相关文章

  • Redis持久化方式之RDB和AOF的原理及优缺点

    Redis持久化方式之RDB和AOF的原理及优缺点

    在Redis中,数据可以分为两类,即内存数据和磁盘数据,Redis 提供了两种不同的持久化方式,其中 RDB 是快照备份机制,AOF 则是追加写操作机制,本文将详细给大家介绍Redis 持久化方式RDB和AOF的原理及优缺点,感兴趣的同学可以跟着小编一起来学习
    2023-06-06
  • redis执行lua脚本的实现

    redis执行lua脚本的实现

    本文主要介绍了redis执行lua脚本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Redis教程(八):事务详解

    Redis教程(八):事务详解

    这篇文章主要介绍了Redis教程(八):事务详解,本文讲解了,本文讲解了事务概述、相关命令列表、命令使用示例、WATCH命令和基于CAS的乐观锁等内容,需要的朋友可以参考下
    2015-04-04
  • Redis的持久化之RDB和AOF机制详解

    Redis的持久化之RDB和AOF机制详解

    这篇文章主要介绍了Redis的持久化之RDB和AOF机制,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • 通过docker和docker-compose安装redis两种方式详解

    通过docker和docker-compose安装redis两种方式详解

    这篇文章主要介绍了通过docker和docker-compose安装redis的两种方式,Docker安装方式包括拉取镜像、查看本地镜像、运行容器和测试连接,Docker Compose安装方式包括目录结构、配置文件、启动和关闭容器、检查启动情况以及查看CPU和内存使用状态,需要的朋友可以参考下
    2024-12-12
  • Windows下Redis的安装使用图解

    Windows下Redis的安装使用图解

    Redis是一个key-value存储系统。Redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。这篇文章小编为大家分享了在Windows下进行安装和使用Redis的技巧。
    2015-09-09
  • Linux服务器快速安装Redis6.0步骤示例详解

    Linux服务器快速安装Redis6.0步骤示例详解

    这篇文章主要为大家介绍了Linux服务器快速安装Redis6.0步骤示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Redis Cluster 字段模糊匹配及删除

    Redis Cluster 字段模糊匹配及删除

    在数据库内我们可以通过like关键字、%、*或者REGEX关键字进行模糊匹配。而在Redis内我们如何进行模糊匹配呢?本文就来介绍一下
    2021-05-05
  • 详解redis集群选举机制

    详解redis集群选举机制

    这篇文章主要介绍了详解redis集群选举机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • redis事务常用操作详解

    redis事务常用操作详解

    在本篇文章里小编给大家分享了关于redis事务常用操作的相关知识点内容,有兴趣的朋友们可以跟着学习参考下。
    2019-07-07

最新评论