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、逐步优化。

原文地址:https://www.cnblogs.com/xiaohaigegede/p/14090812.html