Redis教程

redis 主从,sentinel,cluster三者特性

本文主要是介绍redis 主从,sentinel,cluster三者特性,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、redis的主从复制

1.特性:

主从其实就是一般包含一个主,一个或多个从,从节点从主节点复制数据,可以实现读写分离,主节点做写,从节点做读。

Redis 采用主从(可以多从)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。主从实例部署在不同的物理服务器上,根据公司的基础环境配置,可以实现同时对外提供服务和读写分离策略。

 

2.主从节点的优缺点:

1)优点:

可以实现读写分离,主节点的数据会自动复制到从节点,分担主节点的压力

2)缺点:

当主节点宕机了,会导致部分数据未同步。也不具备容错和回复功能,无论主节点或者从节点宕机都需要等重启之后才能使用

 

二、redis哨兵模式

1.特性:

Redis Sentinel 是 2.8 版本后推出的原生高可用解决方案,其部署架构主要包括两部分:Redis Sentinel 集群和 Redis 数据集群。其实哨兵模式也是一种主从,只不过增加了哨兵的功能,用于监控主节点的状态,当主节点宕机之后会进行投票重新选出主节点。可以实现故障发现、故障自动转移、配置中心和客户端通知,但是sentinel必须为奇数(除了1),用来防止出现脑裂。

哨兵的宕机分为两种:主观宕机(我认为你掉线了)和客观宕机(我们认为你掉线了),当客观宕机了之后就会再选举一个从节点作为主节点。

 

2.redis哨兵模式的优缺点:

1)优点:

  解决主从模式下的高可用

  可以实现一套 Sentinel 监控一组 Redis 数据节点或多组数据节点

  满足 Redis 大容量或高性能的业务需求

2)缺点:

  资源浪费,Redis 数据节点中 slave 节点作为备份节点不提供服务

  不能解决读写分离问题,实现起来相对复杂

  部署相对于主从复杂

 

 

三、redis cluster集群模式

1.特性:

Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解决方案,主要解决 Redis 分布式方面的需求。当遇到单机内存,并发和流量等瓶颈的时候,Redis Cluster 能起到很好的负载均衡的目的。Redis Cluster 集群节点最小配置 6 个节点以上(3 主 3 从),其中主节点提供读写操作,从节点作为备用节点,不提供请求,只作为故障转移使用。Redis Cluster 采用虚拟槽分区,所有的键根据哈希函数映射到 0~16383 个整数槽内,每个节点负责维护一部分槽以及槽所印映射的键值数据。

 

2.redis cluster的优缺点:

1)优点:

  所有Redis节点使用(PING机制)互联

  集群中某个节点的是否失效,是由整个集群中超过半数的节点监测都失效,才能算真正的失效

  客户端不需要proxy即可直接连接redis,应用程序中需要配置有全部的redis服务器IP

  redis cluster把所有的redis node 平均映射到 0-16383个槽位(slot)上,读写需要到指定的redis node上进行操作,因此有多少个redis node相当于redis 并发扩展了多少倍,每个redis node 承担16384/N个槽位

  Redis cluster预先分配16384个(slot)槽位,当需要在redis集群中写入一个key -value的时候,会使 用CRC16(key) mod 16384之后的值,决定将key写入值哪一个槽位从而决定写入哪一个Redis节点 上,从而有效解决单机瓶颈

 

2)缺点:

  大多数时客户端性能会”降低”

  命令无法跨节点使用:mget、keys、scan、flush、sinter等

  客户端维护更复杂:SDK和应用本身消耗(例如更多的连接池)

  不支持多个数据库︰集群模式下只有一个db 0

  复制只支持一层∶不支持树形复制结构,不支持级联复制

  Key事务和Lua支持有限∶操作的key必须在一个节点,Lua和事务无法跨节点使用

 

写于2022/6/12 20:27 weilan

这篇关于redis 主从,sentinel,cluster三者特性的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!