Redis 个人笔记

95 阅读4分钟

1、Redis介绍

前言

本文主要针对Redis的特性和集群方案来说

1.1、Redis简介

Redis是开源免费的高性能NoSQL数据库,数据都是以key value形式存储的,支持数据持久化。

1.2、Redis基本数据结构

image.png

五种基本数据结构1.字符串 2.有序列表 3.无序集合 4.有序集合 5.哈希表

1.2、Redis持久化

1.RDB(Redis Database Backup file)

指的是Redis在配置文件中指定的时间定时的去将快照的数据持久化到磁盘中,这个持久化的过程是异步进行的,不会影响到使用。

2.AOF(Append Only File)

AOF可以理解为RDB的细粒度方式,它会把每次写的操作记录到AOF文件当中。当然AOF也可以选择想要的同步策略,Redis提供了三种同步策略:always(始终同步) 这是默认的同步策略,每次写的数据会立即同步到AOF文件中 ;everysec(每秒同步) 顾名思义就是每秒同步一次写的命令(会有1秒的数据可能被丢失);no(不同步) 这里的不同步并不是指不生效,而是Redis不会主动的同步数据了而把同步的时机交给系统完成。

3.RDB和AOF优缺点

RDB效率高,存储空间小,但是会有数据丢失的风险。
AOF效率低,存储空间比RDB大,会有一定的性能压力,但是能保证数据都能被同步到aof文件中。

1.3、Redis高可用方案

1、主从模式

image.png

主从模式就是从原来的单节点模式拓展出来了多个从节点,但从节点只负责读的操作,主节点负责读/写的操作。每次写的数据会从主节点同步到从节点数据当中,这样一来就大大增加了redis的吞吐量能够支持更大的并发。

1. 主从同步机制

在说同步机制之前我们先要明白同步机制的三个关键知识:

  1. dump文件:这个文件是由master拷贝的一份数据(也是bgsave与RDB相同)丢给slave自己去同步
  2. buffer缓冲区:这个缓冲区只存在于master当中,在客户端有写操作的时候,会写入到缓存区当中
  3. offset偏移量:偏移量指的是数据字节长度,用于记录当前数据同步进度
全量同步

slave第一次进行同步的时候都是进行全量同步的,保证与master数据的一致性。

增量同步

在slave在正常运行中的时候,客户端有数据写到缓存区当中的时候master会告知所有slave有新的数据待同步啦!slave会采用增量同步来实现局部的数据同步,从而保证一致性。

2、哨兵模式

image.png

先说为什么要有哨兵模式,首先哨兵模式是基于主从模式的,在主从模式中会有一个问题,就是同步和写的操作都依赖于这个老大(master),如果老大出了问题宕机了,那slave也就没有存在的意义了。

1.故障迁移

简单说就是哨兵在监控节点状态的时候,发现老大不行了,就会让最有实力的小老弟当老大,这个过程叫做选举。那么选举的依据有三点:1. 优先选择slave-priority最高的(这个在配置文件中配置) 2. offset最大的(最大也就意味着数据最全面) 3. runId最小的(其实这个runId是每个节点启动后都会生成的一个id每次启动都不一样,类似于雪花算法是有序的,所以越小也就代表着最早开始启动的)

3、集群模式

image.png

从原来的一主多从变成了多主多从,之前一主多从节点之间数据都保持一样,那么现在多主多从自然就要保证数据不一样了,从而扩展数据的存储量。

1. 分片思想

集群采用了分片思想,这是一种去中心化的方案,每个master之间互不干扰没有联系。那么什么是分片呢?其实很简单就是通过哈希数据的方式将数据分配到指定的老大那去,你可以理解为有9个人去投靠老大,给每个人分配1-9的号码,369的跟着一号老大走258的跟着二号老大走147的跟着三号老大走,当然这只是打个比方。这样一来呢Redis团队再次扩张了,能容纳更多数据。


本人有时间还会继续完善笔记。