Redis三种部署方案

standaloan(单机模式)

standaloan 是redis单机模式,及全部服务链接一台redis服务,该模式不适用生产。若是发生宕机,内存爆炸,就可能致使全部链接改redis的服务发生缓存失效引发雪崩。web

ssentinel(哨兵模式)

redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis作Master-slave的高可用方案时,假如master宕机了,Redis自己(包括它的不少客户端)都没有实现自动进行主备切换,而Redis-sentinel自己也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行切换redis

在这里插入图片描述

sentinel哨兵以下功能实现
(1)monitoring:监控redis是否正常运行
(2)notification:通知application错误信息
(3)failover:当某个master死掉,选择另一个slave升级为master,更 新master-slave关系。
(4)configurationprovider:client经过sentinel获取redis地址,并在failover时更新地址缓存

2.sentinels and slaves autodiscovery(redis2.8及以上)
配置文件中只配置master地址,slave地址和sentinel地址能够自动发现。
(1)sentinels——sentinel之间经过redis pub/sub交换信息得到。
(2)slaves——询问master得到。架构

3.sdown、odown、failover
故障检测通常都是经过ping-pong机制,sentinel引入sdown(主观下线)和odown(客观下线)机制,目的应该是在集群规模较大时,检测更客观
(1)sdwon——is-master-down-after-milliseconds(可配置)时间内ping-pong失败。sdown的slave不能升级为master。
(2)odown——超过必定数目(可配置)的sentinel认为sdown,odown只针对master。
(3)failover——多数sentinel认为odown。并发

redis-cluster(集群模式)

redis集群模式,一样能够实现redis高可用部署,Redis Sentinel集群模式中,随着业务量和数据量增,到性能达到redis单节点瓶颈,垂直扩容受机器限制,水平扩容涉及对应用的影响以及数据迁移中数据丢失风险。针对这些痛点
Redis3.0推出cluster分布式集群方案,当遇到单节点内存,并发,流量瓶颈是,采用cluster方案实现负载均衡,cluster方案主要解决分片问题,即把整个数据按照规则分红多个子集存储在多个不一样几点上,每一个节点负责本身整个数据的一部分。
Redis Cluster采用哈希分区规则中的虚拟槽分区。虚拟槽分区巧妙地使用了哈希空间,使用分散度良好的哈希函数把全部的数据映射到一个固定范围内的整数集合,整数定义为槽(slot)。Redis Cluster槽的范围是0 ~ 16383。槽是集群内数据管理和迁移的基本单位。采用大范围的槽的主要目的是为了方便数据的拆分和集群的扩展,每一个节点负责必定数量的槽。Redis Cluster采用虚拟槽分区,全部的键根据哈希函数映射到0 ~ 16383,计算公式:slot = CRC16(key)&16383。每个实节点负责维护一部分槽以及槽所映射的键值数据。下图展示一个五个节点构成的集群,每一个节点平均大约负责3276个槽,以及经过计算公式映射到对应节点的对应槽的过程。
哈希分区存储图redis-cluster架构图app

在这里插入图片描述