1. 单节点

单节点实例还是比较简单的,平时做个测试,写个小程序如果需要用到缓存的话,启动一个 Redis 还是很轻松的,做为一个 key/value 数据库也是可以胜任的。过于简单,在此不做说明。

2. 主从模式

存在问题:主节点挂了之后,无法从新选举新的节点作为主节点进行写操作,导致写服务不可用
搭建方式:只需要在配置文件中加上一行配置:slaveof 192.168.1.1 6379

主从模式的一个作用是备份数据,这样当一个节点损坏(指不可恢复的硬件损坏)时,数据因为有备份,可以方 便恢复。
另一个作用是负载均衡,所有客户端都访问一个节点肯定会影响 Redis 工作效率,有了主从以后,查询操作就可以通过查询从节点来完成。
存在问题:整个集群的最大数据量取决于单台机器内存的最大容量。

3.redis sentinel 模式(哨兵模式)

此模式是对简单主从模式的补充。添加了哨兵集群来对主从模式的redis集群进行监控以及故障转移。

原理:在 sentinel 模式中,哨兵首先会通过选举机制先保证自身的高可用。同时通过监控 redis 集群,并在 master 失效时将其中一个 slaver 提升为新的 master 来保证 redis 主从集群的高可用。

4.redis-cluster

背景:尽管可以使用哨兵主从集群实现可用性保证,但是这种实现方式每个节点的数据都是全量复制,数据存放量存在着局限性,受限于内存最小的节点,因此考虑采用数据分片的方式,来实现存储,这个就是 redis-cluster。cluster 可以说是 sentinel 和主从模式的结合体,通过 cluster 可以实现主从和 master 重选功能,所以如果配置两个副本三个分片的话,就需要六个 Redis 实例。

原理

整个集群的实例被分成了两部分:master 和 slaver。每个 master 仅负责自身所分配到的槽的读写请求,slaver 仅负责读请求。同时集群会通过选举机制将失效的 master 对应的 slaver 提升为 master,保证整个集群的高可用。
对比 sentinel 模式的提升:当集群容量不足时,可以动态的添加设备已进行性能提升。整个集群的最大容量不再受制于集群中内存最小的机器。
存在问题:当 master 失效时仍然可能存在丢失已经提交的指令的情况,进而出现缓存不一致。