美文网首页redis学习程序员Redis
初识Redis(四):Redis主从复制与分区

初识Redis(四):Redis主从复制与分区

作者: Lee_DH | 来源:发表于2018-01-03 19:06 被阅读54次

    Redis主从复制

    一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下:
    1.单台Redis服务器会发生单点故障,且负载压力较大;2.单台Redis服务器容量有限。一般可以用Redis主从复制或者Redis集群解决这个问题,本文只讨论Redis主从复制

    主从复制优点
    • 提高服务器的负载能力,可根据读请求的规模自由增加或者减少从库数量
    • 数据多重备份

    ps: 在Redis主从模式中,一台主库可以拥有多个从库,但是一个从库只能隶属于一个主库

    主从复制原理

    当一个从数据库启动时,会向主数据库发送SYNC命令,主数据库收到命令后会开始在后台保存快照(即RDB持久化),并将保存快照期间接收的命令缓存起来。当快照完成时,Redis将快照文件和缓存文件命令发给从数据库,从数据库载入快照文件并执行缓存命令。以上过程称为复制初始化。复制初始化结束之后,主数据库每收到写命令就会将命令同步给从数据库,从而保证主从数据一致,这一过程称为复制同步阶段。

    主从复制配置
    • 只需在从数据库的配置文件中,加上如下命令:

    slaveof 主数据库地址 主数据库端口

    • 如果主数据库需要密码登陆时,还需加上:

    asterauth password

    • 可通过如下命令查看当前实例在复制系统中的相关信息:

    info replication

    • 默认情况下,从库只能读取数据,不能写入数据,但是可以在从库的配置文件中加上如下配置项允许从库写数据:

    slave-read-only no

    • 要想断开当前数据库与主库的连接,并且和新数据库进行同步,只需在客户端执行以下命令即可:

    slaveof 新主库地址 新主库端口

    • 想停止接收其他数据库的同步,将当前数据库升级为主库,只需在客户端执行:

    slaveof no one

    • 当主数据库写完数据,准备同步到从服务器时,从服务器断掉与主服务器的连接,为了保证数据的一致性,可通过配置以下参数,限制当前只有n或者n个以上的从服务器连接到主库,主数据库才可写:

    min-slaves-to-write

    Redis分区

    分区概念

    分区是将数据分割到不同的Redis实例的过程,每个Redis实例只包含所有key的一部分(子集)。

    分区优点
    • 数据存储更有规律
    • 整合了多个服务器的存储空间、计算能力、网络带宽等
    分区缺点
    • 不能操作存储在不同实例的key,比如无法匹配存储在两个不同实例的集合的交集
    • Redis事务涉及到多个键不能使用
    • 分区使得数据处理更复杂,比如备份数据需要备份每个实例服务器上的所有数据
    • 增加或删除容量比较复杂
    分区类型(分区规则)
    • 范围分区,将一定范围内的对象映射到特定的Redis实例
    • 哈希分区,根据HASH算法,均匀的将数据映射到不同的实例
    分区的实现
    • 通过代码层实现算法,手动将对象分配到特定的实例
    • 通过某些具有分区功能的客户端,由客户端直接选择正确的节点,将key存到相应实例中
    • client将请求发送到代理,由代理分配节点,存储key到实例中

    相关文章

      网友评论

        本文标题:初识Redis(四):Redis主从复制与分区

        本文链接:https://www.haomeiwen.com/subject/xorknxtx.html