Redis单机,主从,哨兵,集群四大模式
Redis 单机模式
Redis 单机模式是指 Redis 数据库在单个服务器上以独立的、单一的进程运行的模式。在这种模式下,Redis 不涉及数据分片或集群配置,所有的数据和操作都在一个实例中进行。以下是关于 Redis 单机模式的详细介绍:
-
单一实例: 在 Redis 单机模式中,只有一个 Redis 实例在一个服务器上运行。这个实例负责处理所有的数据存储和操作请求。
-
内存数据库: Redis 单机模式仍然是一个基于内存的数据库,所有的数据都存储在内存中,因此读取操作非常快速。这使得 Redis 单机模式适用于需要高速读取的应用场景,如缓存系统。
-
单线程模型: Redis 单机模式采用单线程模型来处理客户端请求。这是因为大部分 Redis 的操作都是非阻塞的,且 Redis 的性能瓶颈通常在于 CPU 而不是线程的并发性。这种单线程模型简化了内部的数据结构和操作,提高了性能和稳定性。
-
持久化: Redis 单机模式支持数据持久化,即将数据保存到磁盘以便在重启后恢复。有两种主要的持久化方式:RDB(Redis Database Dump)和 AOF(Append-Only File)。RDB 将数据库的快照保存到磁盘,AOF 将写操作追加到文件中,用于数据恢复。
-
数据类型: Redis 单机模式支持多种数据类型,如字符串、哈希表、列表、集合、有序集合等。这些数据类型使得 Redis 能够用于多种用途,如缓存、计数器、排行榜、实时分析等。
-
发布订阅: Redis 单机模式支持发布订阅模式,其中一个客户端可以发布消息,而其他客户端可以订阅感兴趣的消息频道。这在构建实时消息传递系统时非常有用。
-
事务: Redis 单机模式支持事务,允许多个命令在一个原子操作中执行,要么全部提交,要么全部回滚。
-
应用场景: Redis 单机模式适用于小规模应用,或者对数据可用性要求不是特别高的场景。它可以用作缓存、计数器、实时分析、排行榜、任务队列等。
尽管 Redis 单机模式在简单性和易用性方面有优势,但是在面对高并发和大规模数据时,可能会出现性能和可用性的瓶颈。
Redis 主从模式
Redis 主从模式是一种分布式架构,用于提高 Redis 数据库的可用性、性能和数据备份能力。在主从模式中,有一个主节点(master)和一个或多个从节点(slaves)。主节点负责处理写操作和部分读操作,而从节点负责复制主节点的数据,并处理部分读操作。
以下是 Redis 主从模式的关键特点和工作原理:
-
数据复制: 主节点负责写操作和部分读操作,而从节点通过复制主节点的数据来实现数据备份和读取分担。从节点会周期性地从主节点获取数据快照(RDB)或增量日志(AOF)来保持数据的一致性。
-
读写分离: 主节点负责写操作,而从节点负责读操作,从而分担了主节点的负载。这提高了系统的整体性能和承载能力。
-
数据备份: 通过将数据复制到从节点,主从模式实现了数据的冗余备份。在主节点发生故障时,可以将其中一个从节点升级为新的主节点,从而保证了系统的可用性。
-
故障恢复: 当主节点发生故障时,可以通过升级一个从节点为新的主节点来实现快速的故障恢复。此过程称为故障切换(failover)。
-
数据分片: 通过使用多个从节点,主从模式还可以实现数据分片,从而提高了系统的扩展性和性能。
-
配置设置: 在主从模式中,从节点需要配置主节点的地址和端口,以便进行数据复制。主节点不会自动感知从节点的存在。
-
数据延迟: 由于从节点需要从主节点复制数据,可能会出现从节点数据相对于主节点稍有延迟的情况。
主从模式适用于需要提高 Redis 数据库的可用性和性能的场景,特别是在读多写少的应用中。然而,主从模式并不能提供高可用性的绝对保证,因为当主节点发生故障时,故障切换可能需要一些时间来完成。对于更高级别的高可用性和分布式需求,可以考虑使用 Redis 集群、哨兵模式或其他分布式数据库解决方案,也就是我们下面即将讲到的几种模式!
Redis 哨兵模式
Redis 哨兵模式(Redis Sentinel)是一种用于监控和管理 Redis 集群的解决方案,旨在提供高可用性和自动故障转移。在 Redis 哨兵模式中,一组 Redis 哨兵进程负责监控 Redis 主节点和从节点的状态,并在主节点发生故障时自动进行故障转移。
以下是 Redis 哨兵模式的关键特点和工作原理:
-
监控主从节点: Redis 哨兵进程会定期监控主节点和从节点的状态。它们通过发送心跳和检查 Redis 服务器的响应来确定节点的健康状态。
-
自动故障转移: 当 Redis 主节点发生故障时,哨兵会自动检测到,并协调将一个可用的从节点升级为新的主节点,以实现快速的故障转移。这样可以减少系统的停机时间。
-
配置管理: Redis 哨兵可以监控多个 Redis 主从节点,当节点的状态发生变化时,哨兵可以自动更新配置,确保客户端连接到正确的节点。
-
提供服务发现: 客户端可以连接到一个或多个 Redis 哨兵进程,而不需要直接连接到具体的 Redis 节点。哨兵可以为客户端提供当前可用的主节点和从节点信息。
-
多哨兵模式: 可以配置多个 Redis 哨兵来实现冗余和高可用性。这些哨兵之间相互协作,共同管理 Redis 集群。
-
投票决策: 在故障转移过程中,如果有多个哨兵认为某个从节点应该升级为新的主节点,它们会进行投票,并达成共识来进行决策。
Redis 哨兵模式适用于需要高可用性的 Redis 部署,特别是在读写分离和故障转移方面。它可以有效地监控和管理 Redis 集群,从而减少系统的停机时间,提高了应用的稳定性。
然而,需要注意的是,Redis 哨兵模式并不能提供绝对的高可用性,因为在故障转移期间可能会出现短暂的服务中断。对于更高级别的高可用性和性能需求,可以考虑使用 下面即将涉及到的Redis 集群。
Redis集群模式
Redis 集群模式是一种分布式架构,用于将多个 Redis 节点组合成一个逻辑集群,以提供高可用性、可扩展性和数据分布能力。在 Redis 集群中,数据会被分布到多个节点上,每个节点负责管理部分数据,同时还能自动进行故障转移和数据迁移。
以下是 Redis 集群模式的关键特点和工作原理:
-
数据分片: Redis 集群会将数据分成多个数据分片,每个数据分片会被存储在不同的节点上。这样可以有效地将数据分布到多个节点,提高了系统的扩展性和性能。
-
高可用性: Redis 集群在设计上具有高可用性,每个数据分片都有多个副本,确保了即使有节点发生故障,数据仍然可用。集群支持自动故障转移,可以将一个从节点升级为新的主节点,从而保证了系统的可用性。
-
分布式故障检测: Redis 集群采用多个节点进行故障检测,当某个节点故障时,其他节点可以检测到,并协调进行故障转移。
-
节点间通信: Redis 集群中的节点之间通过二进制协议进行通信,实现数据同步、故障检测和节点状态的维护。
-
自动数据迁移: 当增加或删除节点时,Redis 集群可以自动进行数据迁移,确保数据在不同节点之间平衡分布。
-
数据一致性: Redis 集群通过使用哈希槽来分布数据,确保相同键的数据都会被存储在同一个节点上,从而保证了数据的一致性。
-
读写分离: Redis 集群支持客户端进行读写分离,即读操作可以从多个节点中的任意一个节点读取数据,而写操作会被发送到主节点。
-
节点扩展: 当需要扩展 Redis 集群的容量时,可以通过添加新的节点来实现。Redis 集群会自动将部分数据迁移到新的节点上,从而实现容量的扩展。
Redis 集群模式适用于需要高可用性、高性能和分布式能力的场景,特别是在面对大规模数据和高并发请求时。它可以有效地管理和分布数据,提供了更高级别的可用性和可扩展性,但也需要一些额外的配置和管理工作,特别是集群化配置,是一个比较费力的地方,如何进行资源分配,甚至是扩容缩容,涉及到弹性架构,是一个比较高大上的技术。当然,也有docker部署方式,可以尝试一下,很好玩,很有趣!!!
四大模式区别
我们分别介绍了 Redis 的单机模式、主从模式,哨兵模式和集群模式。下面我会对这4种模式进行简要的比较,更好地理解它们之间的区别。
-
单机模式:
- 概述:Redis 单机模式是最简单的部署模式,只有一个 Redis 实例在单个服务器上运行。
- 优点:简单易用,适合小规模应用或开发环境。可以用作缓存、临时存储等。
- 缺点:不具备高可用性,如果单点故障,会导致数据不可用。不适用于高并发和大规模应用。
-
主从模式:
- 概述:Redis 主从模式通过主节点和从节点组成,从节点复制主节点的数据,用于提高可用性和读写分离。
- 优点:提供了一定程度的高可用性和读写分离。可以应对主节点故障,实现快速故障转移。
- 缺点:主节点故障时需要手动升级从节点为新的主节点,存在一定的停机时间。不适合大规模写入和数据分布场景。
-
哨兵模式:
- 概述:Redis 哨兵模式通过一组哨兵进程监控主从节点的状态,自动进行故障转移。
- 优点:提供了自动化的高可用性,能够自动检测主节点故障并实现快速故障转移。适用于需要高可用性的场景。
- 缺点:故障转移可能导致短暂的服务中断。配置和管理相对复杂。
-
集群模式:
- 概述:Redis 集群模式通过将多个节点组成集群,实现数据分片和高可用性。
- 优点:提供了高可用性、可扩展性和数据分布能力。自动数据分片和故障转移,适用于大规模和高并发场景。
- 缺点:配置和管理相对复杂,需要维护多个节点。
综合来说,不同的 Redis 部署模式适用于不同的需求和场景。如果你需要简单的数据存储或开发测试环境,可以考虑单机模式。如果需要一定的高可用性和读写分离,可以选择主从模式。如果需要更高级别的自动化高可用性和故障转移,可以使用哨兵模式。而如果需要高可用性、可扩展性和数据分布能力,可以选择集群模式。在选择模式时,要根据你的应用需求、可用性要求和性能要求来进行权衡和决策。
而且在以前的文章中,因为涉及到docker集群化部署,我专门出过一片详细的文章关于部署Redis集群,大家了可以有兴趣看看!
docker 部署Redis集群节点
根据我短暂的项目经验,目前尚且没有遇到大型的系统,所以也就没有使用到集群模式,就是单机版,实现token鉴权或者是用户个人数据存储,没有那个高级的需求,但是,没有不代表以后不需要,大家希望多多了解,多多实践,机会总是留给有准备的人!
各自应用场景
不同的 Redis 部署模式适用于不同的应用场景。以下是针对不同场景的建议:
- 单机模式:
- 适用场景:开发测试环境、小规模应用、临时数据存储、缓存数据、临时计数器等。
- 主从模式:
- 适用场景:读多写少的应用、提高读取性能、部分数据冗余备份。
- 哨兵模式:
- 适用场景:需要自动化高可用性和故障转移的场景、对数据可用性要求较高。
- 集群模式:
- 适用场景:需要高可用性、高性能和数据分布的大规模应用、大规模写入和读取场景。
综合来看,选择合适的 Redis 部署模式取决于你的应用需求和优先级。如果你需要简单的缓存或临时存储,可以选择单机模式。如果需要读写分离和一定程度的高可用性,可以选择主从模式。如果对高可用性要求较高且不想手动管理故障转移,可以选择哨兵模式。而如果需要高可用性、可扩展性和数据分布,可以选择集群模式。无论选择哪种模式,都需要根据实际需求进行权衡和决策。
立秋了,2023的夏天已经成为昨天,祝福我们吧,祝福我们彼此,天凉好个秋,万事胜意!加油!!!
相关文章:

Redis单机,主从,哨兵,集群四大模式
Redis 单机模式 Redis 单机模式是指 Redis 数据库在单个服务器上以独立的、单一的进程运行的模式。在这种模式下,Redis 不涉及数据分片或集群配置,所有的数据和操作都在一个实例中进行。以下是关于 Redis 单机模式的详细介绍: 单一实例&#…...

2023年8月份华为H12-811更新了
801、[单选题]178/832、在系统视图下键入什么命令可以切换到用户视图? A quit B souter C system-view D user-view 试题答案:A 试题解析:在系统视图下键入quit命令退出到用户视图。因此答案选A。 802、[单选题]“网络管理员在三层交换机上创建了V…...

[K8S:命令执行:权限异常:解决篇]:通过更新kubeconfig配置相关信息
文章目录 一:场景复现:1.1:关键信息:1.2:全异常日志输出: 二:解决流程:2.1:更新 kubeconfig:2.1.1:执行命令: 2.2:再次执行…...

帆软设计器报表加载不出折线图的原因
最近在用帆软设计器做可视化图表。偶有遇到因为数据集的字段类型导致加载不出折线,现记录如下。做报表的同行可以参考。 数据库使用了 Oracle 11g。数据集的 SQL 代码片是之前用在另一个单元格报表里面的。页面上有一个率是直接计算得出,我为了方便、就…...
[QCA6174]sdx12平台WiFi QCA6174在驱动加载的时候增加模块参数方法
需求描述 由于开发需要,有时候需要在驱动模块加载的时候增加一个参数,传递给到驱动使用 平台描述 Qualcomm SDX12+QCA6174平台 驱动信息 [ 112.281429] wlan: loading driver v4.0.11.213X [ 112.340262] msm_pcie_enable: PCIe: Assert the reset of endpoint of RC0. …...

Ajax-AJAX请求的不同发送方式
🥔:你一定能成为想要成为的人 发送AJAX请求不同方式 发送AJAX请求不同方式1、jQuery发送AJAX请求2、axios发送AJAX请求(重点)3、fetch发送AJAX请求 发送AJAX请求不同方式 1、jQuery发送AJAX请求 首先需要jquery的js文件…...

简易图书管理系统(面向对象思想)
目录 前言 1.整体思路 2.Book包 2.1Book类 2.2BookList类 3.user包 3.1User类 3.2NormalUser类 3.3AdminUser类 4.operation 4.1IOPeration接口 4.2ExitOperation类 4.3FindOperation类 4.4ShowOperation类 4.5AddOperation类 4.6DelOperation类 4.7BorrowOpera…...

C++ 函数模板与类模板
C最重要的特性之一就是代码重用,为了实现代码重用,代码必须具有通用性。通用代码应不受数据类型的影响,并且可以自动适应数据类型的变化。这种程序设计类型称为参数化程序设计。模板是C支持参数化程序设计的工具,通过它可以实现参…...

Tailwind CSS:简洁高效的工具,提升前端开发体验
112. Tailwind CSS:简洁高效的工具,提升前端开发体验 1. 什么是Tailwind CSS? Tailwind CSS是由Adam Wathan、Jonathan Reinink、David Hemphill和Steve Schoger等人共同创建的一种现代CSS框架。与传统的CSS框架不同,Tailwind CS…...

NR CSI(六) CSI reporting using PUCCH
之前NR CSI(二) the workflow of CSI report有对CSI report的相关流程进行介绍,而这篇主要看下CSI reporting over PUCCH的相关规定。 CSI report在PUCCH上传输的场景如上表红色字体,有三种场景,具体的对应的是Periodic 和Semi-Persistent CS…...

论文阅读---《Unsupervised Transformer-Based Anomaly Detection in ECG Signals》
题目:基于Transformer的无监督心电图(ECG)信号异常检测 摘要 异常检测是数据处理中的一个基本问题,它涉及到医疗感知数据中的不同问题。技术的进步使得收集大规模和高度变异的时间序列数据变得更加容易,然而ÿ…...
5G上行干扰规避的参数策略
LNR干扰避让 1. 干扰避让特性 D1/D2干扰避让:干扰与非干扰带宽独立测量,避免部分频带受干扰拉低整个带宽MCS,基于测量结果, 用户级自适应调度60/80/100M,躲避干扰频带。 窄带干扰避让:避免部分带宽的干扰对…...

CTF流量题解tcp1
用流量工具进行分析。发现消息长度有点异常。右键TCP跟踪。 ....mos.-mos-.-.mos-.-mos..-.mos..-mos-. 摩斯密码生成-网页工具 (adminun.com)...

Django快速入门
文章目录 一、安装1.创建虚拟环境(virtualenv和virtualenvwrapper)2. 安装django 二、改解释器三、创建一个Django项目四、项目目录项目同名文件夹/settings.py 五、测试服务器启动六、数据迁移七、创建应用八、基本视图1. 返回响应 response2. 渲染模板…...
Python “牵手” 淘宝商品详情数据获取方法,淘宝API申请指南
淘宝详情接口 API 是淘宝开放平台提供的一种 API 接口,它可以帮助开发者获取淘宝商品的详细信息,包括商品的标题、描述、图片等信息。在淘宝电商平台的开发中,淘宝详情接口 API 是非常常用的 API,因此本文将详细介绍淘宝详情接口 …...
OpenScene
paper:OpenScene: 3D Scene Understanding with Open Vocabularies code: https://github.com/pengsongyou/openscene 摘要:传统的3D场景理解方法依赖于带标签的3D数据集,在有监督的情况下为单个任务训练模型。我们提出了OpenScene,一种替代性的方法,模型预测CLIP特征空…...

HDFS中的Trash垃圾桶回收机制
Trash垃圾桶回收机制 文件系统垃圾桶背景功能概述Trash Checkpoint Trash功能开启关闭HDFS集群修改core-site.xml删除文件到trash删除文件跳过从trash中恢复文件清空trash 文件系统垃圾桶背景 回收站(垃圾桶)是windows操作系统里的一个系统文件夹&#…...

segment-anything使用说明
文章目录 一. segment-anything介绍二. 官网Demo使用说明三. 安装教程四. python调用生成掩码教程五. python调用SAM分割后转labelme数据集 一. segment-anything介绍 Segment Anything Model(SAM)根据点或框等输入提示生成高质量的对象遮罩,…...

在魔塔社区搭建通义千问-7B(Qwen-7B)流程
复制以下语句 python3 -m venv myvenvsource myvenv/bin/activatepip install modelscope pip install transformers_stream_generator pip install transformers pip install tiktoken pip install accelerate pip install bitsandbytestouch run.py vi run.py复制下面代码粘…...

Redis 加入服务列表自启动
1、下载reids windows版本,选择zip格式下载 2、解压zip,并进入路径; 3、命令提示符(cmd) 进入解压后的路径后,输入指令:redis-server --service-install redis.windows.conf; 4、如…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...