zoukankan      html  css  js  c++  java
  • redis 主从复制

    1、redis 内存数据库,KV数据库(memcached)数据结构数据库。数据结构有:string,list,set,zset,hash,srteam。

    一致性:

    (a)强一致性(一直一致) (b)最终一致性(最终一致)

    redis采用的是最终一致性。

    2、redis 三种集群方式:

    (a)主从复制 (b)哨兵模式 (c)cluster集群

    3、解决哪些问题:

    (a)解决单点故障的问题;

    (b)高可用的基础。CAP原则。C:一致性,A:可用性,P:分区容错性

    CAP原则:不能同时满足,保二弃一。一般都需要满足P原则。所以一般强可用时,采用最终一致性(软一致性)。

    4、主从复制的应用 有哪些?

    (a)读写分离。( 异步事件机制、单线程(网络事件处理+业务),如果对于一致性要求不高的场景,可以采用读写分离的场景)

    (b)master 设置不持久化、slave设置持久化。 1、时间事件(定时器) 2、dict(数组+hash) 扩容和缩容 size > used会影响dict 索引效率。

    (c)从数据库 基础上设置 从节点;用于线上数据测试,不会影响主从数据一致;

    5、原理:

    (1)提供了两种同步的方式

    a、全同步

    b、增量同步

    (2)两种持久化方法:

    a、rdb:将一段时间内数据,压缩为一个文件,可能会丢失(同步时间间隔)数据。

    b、aof:以操作为单位,进行存储。丢失的事一个写/删除等操作。

    6、redis主从复制的版本迭代:

    (1)分析需求:

    a、新加入节点

    b、主从连接故障

    c、从数据库重启

    d、主从切换

    (2)版本迭代

    a、< 2.8 版本之前的版本采用 全量同步方式。不考虑效率时,这是正确的做法。场景a、c。

    b、2.8版本增量同步方式:

    方法:a、缓冲区(size) b、偏移量(指明缓冲区的位置) c、runid 目的:限定一个短时间内数据同步的方式。场景b。

    c、4.0版本:缓冲区+偏移量+runid 写入rdb中。 场景 d。

    7、开发项目时启示:简单可用,逐步优化。

    a、先关注核心功能开发,数据结构数据库(空间和时间复杂度)

    b、逐步优化。

  • 相关阅读:
    Go 单元测试、基准测试、并发基准测试
    Go url编码和字符转码
    ssh 登录进入 docker container
    Python 开发
    Ethereum 源码分析之 accounts
    Ethereum 源码分析之框架
    数据库视图
    共识算法:PBFT、RAFT
    JQuery Mobile
    Android Studio
  • 原文地址:https://www.cnblogs.com/xiaohaigegede/p/14090812.html
Copyright © 2011-2022 走看看