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