Redis集群模式及工作原理
Redis有三种集群模式:主从模式、哨兵模式和集群模式。
1. 主从模式
所有的写请求都被发送到主数据库上,再由主数据库将数据同步到从数据库上。主数据库主要用于执行写操作和数据同步,从数据库主要用于执行读操作缓解系统的读压力。Redis的主从模式如下图所示:

实现原理请参考《Redis主从复制的原理》
2. 哨兵模式
在主从模式上添加了一个哨兵的角色来监控集群的运行状态。哨兵通过发送命令让Redis服务器返回其运行状态。哨兵是一个独立运行的进程,在监测到Master宕机时会自动将Slave切换成Master,然后通过发布与订阅模式通知其他从服务器修改配置文件,完成主备热切。Redis的哨兵模式如图所示:

3. 集群模式
Redis集群实现了在多个Redis节点之间进行数据分片和数据复制。基于Redis集群的数据自动分片能力,我们能够方便地对Redis集群进行横向扩展,以提高Redis集群的吞吐量。基于Redis集群的数据复制能力,在集群中的一部分节点失效或无法进行通信时,Redis仍然可以基于副本数据对外提供服务,这提高了集群的可用性。Redis的集群模式如下图所示:

Redis集群遵循如下原则:
1)所有Redis节点彼此都通过PING-PONG机制互联,内部使用二进制协议优化传输速度和带宽。
2)在集群中超过半数的节点检测到某个节点Fail后将该节点设置为Fail状态。
3)客户端与Redis节点直连,客户端连接集群中任何一个可用节点即可对集群进行操作。
4)Redis-Cluster把所有的物理节点都映射到0~16383的slot(槽)上,Cluster负责维护每个节点上数据槽的分配。Redis的具体数据分配策略为:在Redis集群中内置了16384个散列槽;需要在Redis集群中放置一个Key-Value时,Redis会先对Key使用CRC16算法算出一个结果,然后把结果对16384求余数,这样每个Key都会对应一个编号0~16383的散列槽;Redis会根据节点的数量大致均等地将散列槽映射到不同的节点。
Redis集群模式及工作原理的更多相关文章
- 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?
作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...
- 深入剖析Redis系列: Redis集群模式搭建与原理详解
前言 在 Redis 3.0 之前,使用 哨兵(sentinel)机制来监控各个节点之间的状态.Redis Cluster 是 Redis 的 分布式解决方案,在 3.0 版本正式推出,有效地解决了 ...
- 突破Java面试-Redis集群模式的原理
1 面试题 Redis集群模式的工作原理说一下?在集群模式下,key是如何寻址的?寻址都有哪些算法?了解一致性hash吗? 2 考点分析 Redis不断在发展-Redis cluster集群模式,可以 ...
- Redis集群模式之分布式集群模式
前言 Redis集群模式主要有2种: 主从集群 分布式集群. 前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡. 本文主要讲解主从集群.本章主要讲解后一半部分,Redis集群. 与本 ...
- Redis集群模式配置
redis集群部署安装: https://blog.csdn.net/huwh_/article/details/79242625 https://www.cnblogs.com/mafly/p/re ...
- Springboot2.x集成Redis集群模式
Springboot2.x集成Redis集群模式 说明 Redis集群模式是Redis高可用方案的一种实现方式,通过集群模式可以实现Redis数据多处存储,以及自动的故障转移.如果想了解更多集群模式的 ...
- AWS 创建redis 集群模式遇到的问题
问题描述 前几天在aws 平台创建了Redis 集群模式,但是链接集群的时候发现无法连接,返回信息超时. 通过参数组创建redis的时候提示报错:Replication group with spec ...
- 5分钟实现用docker搭建Redis集群模式和哨兵模式
如果让你为开发.测试环境分别搭一套哨兵和集群模式的redis,你最快需要多久,或许你需要一天?2小时?事实是可以更短. 是的,你已经猜到了,用docker部署,真的只需要十几分钟. 一.准备工作 拉取 ...
- Redis集群模式介绍
前言: 一.为什么要使用redis 1,解决应用服务器的cpu和内存压力 2,减少io的读操作,减轻io的压力(内存中读取) 3,关系型数据库扩展性,不强,难以改变表的结构 二.优点 1,nosql数 ...
- 老司机带你玩转面试(5):Redis 集群模式 Redis Cluster
前文回顾 建议前面文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 「老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩.击穿. ...
随机推荐
- MySql索引底层原理(01)
目的:通过mysql获取数据,检索数据的原理来理解索引,以及如何利用好索引. 由于篇幅问题,可能会连载几篇文章. 从mysql获取一条数据说起: 我们知道,电脑的系统在获取数据的时候会旋转磁盘,然后移 ...
- 解决adb devices无法连接各种模拟器
经常使用到模拟器的童鞋,如果在使用adb devices命令时,发现出现"List of devices attached",模拟器USB调试都开启的情况下,也没有连接成功.这种情 ...
- jquery链式调用原理
jquery选择器$('selector')返回的不是数组,而是一个被封装好的jQuery对象,查询到的每一个节点,都被以下标为属性的方式添加到jQuery对象,jQuery对象上的方法包含对象本身的 ...
- js 浮点数加、减、乘、除。
1.浮点数加法运算 function numAdd(arg1, arg2) { var r1, r2, m; try { r1 = arg1.toString().split("." ...
- 修改mysql多个表的相同字段为同一值内容
mysql将所有数据库的表的相同字段更新为某一值 1.创建存储过程函数名为:proc_update_client_id CREATE PROCEDURE `proc_update_client_id` ...
- docker镜像的获取、查看、删除、docker镜像管理、docker容器管理
在不想弄乱本地及其环境下该如何进行系软件的安装? 下载安装docker工具 获取该软件的docker镜像(你以后想要用各种工具,基本都能够搜索docker search nginx:版本号到合适的镜像 ...
- 搭建webssh和nginx反向代理
0.前置条件,centos主机安装了python3和nginx 1.安装webssh pip3 install webssh 2.添加自定义服务 systemctl cat webssh # ...
- Chrome 中的 JavaScript 断点设置和调试技巧--转自hanguokai.com
你是怎么调试 JavaScript 程序的?最原始的方法是用 alert() 在页面上打印内容,稍微改进一点的方法是用 console.log() 在 JavaScript 控制台上输出内容.嗯~,用 ...
- Finance财务软件(如何运行该软件)
下载软件 首先,去gitHub下载该项目的release,尽量下载最新版本:https://github.com/edwardorchis/finance/releases.国内也可以在码云下载htt ...
- 学生网络创业交流会-2021年office
1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...