Redis单机,主从,哨兵,集群四大模式

news2024/10/7 18:26:40

在这里插入图片描述

Redis 单机模式

在这里插入图片描述

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

  1. 单一实例: 在 Redis 单机模式中,只有一个 Redis 实例在一个服务器上运行。这个实例负责处理所有的数据存储和操作请求。

  2. 内存数据库: Redis 单机模式仍然是一个基于内存的数据库,所有的数据都存储在内存中,因此读取操作非常快速。这使得 Redis 单机模式适用于需要高速读取的应用场景,如缓存系统。

  3. 单线程模型: Redis 单机模式采用单线程模型来处理客户端请求。这是因为大部分 Redis 的操作都是非阻塞的,且 Redis 的性能瓶颈通常在于 CPU 而不是线程的并发性。这种单线程模型简化了内部的数据结构和操作,提高了性能和稳定性。

  4. 持久化: Redis 单机模式支持数据持久化,即将数据保存到磁盘以便在重启后恢复。有两种主要的持久化方式:RDB(Redis Database Dump)和 AOF(Append-Only File)。RDB 将数据库的快照保存到磁盘,AOF 将写操作追加到文件中,用于数据恢复。

  5. 数据类型: Redis 单机模式支持多种数据类型,如字符串、哈希表、列表、集合、有序集合等。这些数据类型使得 Redis 能够用于多种用途,如缓存、计数器、排行榜、实时分析等。

  6. 发布订阅: Redis 单机模式支持发布订阅模式,其中一个客户端可以发布消息,而其他客户端可以订阅感兴趣的消息频道。这在构建实时消息传递系统时非常有用。

  7. 事务: Redis 单机模式支持事务,允许多个命令在一个原子操作中执行,要么全部提交,要么全部回滚。

  8. 应用场景: Redis 单机模式适用于小规模应用,或者对数据可用性要求不是特别高的场景。它可以用作缓存、计数器、实时分析、排行榜、任务队列等。

尽管 Redis 单机模式在简单性和易用性方面有优势,但是在面对高并发和大规模数据时,可能会出现性能和可用性的瓶颈。

Redis 主从模式

在这里插入图片描述

Redis 主从模式是一种分布式架构,用于提高 Redis 数据库的可用性、性能和数据备份能力。在主从模式中,有一个主节点(master)和一个或多个从节点(slaves)。主节点负责处理写操作和部分读操作,而从节点负责复制主节点的数据,并处理部分读操作。

以下是 Redis 主从模式的关键特点和工作原理:

  1. 数据复制: 主节点负责写操作和部分读操作,而从节点通过复制主节点的数据来实现数据备份和读取分担。从节点会周期性地从主节点获取数据快照(RDB)或增量日志(AOF)来保持数据的一致性。

  2. 读写分离: 主节点负责写操作,而从节点负责读操作,从而分担了主节点的负载。这提高了系统的整体性能和承载能力。

  3. 数据备份: 通过将数据复制到从节点,主从模式实现了数据的冗余备份。在主节点发生故障时,可以将其中一个从节点升级为新的主节点,从而保证了系统的可用性。

  4. 故障恢复: 当主节点发生故障时,可以通过升级一个从节点为新的主节点来实现快速的故障恢复。此过程称为故障切换(failover)。

  5. 数据分片: 通过使用多个从节点,主从模式还可以实现数据分片,从而提高了系统的扩展性和性能。

  6. 配置设置: 在主从模式中,从节点需要配置主节点的地址和端口,以便进行数据复制。主节点不会自动感知从节点的存在。

  7. 数据延迟: 由于从节点需要从主节点复制数据,可能会出现从节点数据相对于主节点稍有延迟的情况。

主从模式适用于需要提高 Redis 数据库的可用性和性能的场景,特别是在读多写少的应用中。然而,主从模式并不能提供高可用性的绝对保证,因为当主节点发生故障时,故障切换可能需要一些时间来完成。对于更高级别的高可用性和分布式需求,可以考虑使用 Redis 集群、哨兵模式或其他分布式数据库解决方案,也就是我们下面即将讲到的几种模式!

Redis 哨兵模式

在这里插入图片描述

Redis 哨兵模式(Redis Sentinel)是一种用于监控和管理 Redis 集群的解决方案,旨在提供高可用性和自动故障转移。在 Redis 哨兵模式中,一组 Redis 哨兵进程负责监控 Redis 主节点和从节点的状态,并在主节点发生故障时自动进行故障转移。

以下是 Redis 哨兵模式的关键特点和工作原理:

  1. 监控主从节点: Redis 哨兵进程会定期监控主节点和从节点的状态。它们通过发送心跳和检查 Redis 服务器的响应来确定节点的健康状态。

  2. 自动故障转移: 当 Redis 主节点发生故障时,哨兵会自动检测到,并协调将一个可用的从节点升级为新的主节点,以实现快速的故障转移。这样可以减少系统的停机时间。

  3. 配置管理: Redis 哨兵可以监控多个 Redis 主从节点,当节点的状态发生变化时,哨兵可以自动更新配置,确保客户端连接到正确的节点。

  4. 提供服务发现: 客户端可以连接到一个或多个 Redis 哨兵进程,而不需要直接连接到具体的 Redis 节点。哨兵可以为客户端提供当前可用的主节点和从节点信息。

  5. 多哨兵模式: 可以配置多个 Redis 哨兵来实现冗余和高可用性。这些哨兵之间相互协作,共同管理 Redis 集群。

  6. 投票决策: 在故障转移过程中,如果有多个哨兵认为某个从节点应该升级为新的主节点,它们会进行投票,并达成共识来进行决策。

Redis 哨兵模式适用于需要高可用性的 Redis 部署,特别是在读写分离和故障转移方面。它可以有效地监控和管理 Redis 集群,从而减少系统的停机时间,提高了应用的稳定性。

然而,需要注意的是,Redis 哨兵模式并不能提供绝对的高可用性,因为在故障转移期间可能会出现短暂的服务中断。对于更高级别的高可用性和性能需求,可以考虑使用 下面即将涉及到的Redis 集群。

Redis集群模式

在这里插入图片描述

Redis 集群模式是一种分布式架构,用于将多个 Redis 节点组合成一个逻辑集群,以提供高可用性、可扩展性和数据分布能力。在 Redis 集群中,数据会被分布到多个节点上,每个节点负责管理部分数据,同时还能自动进行故障转移和数据迁移。

以下是 Redis 集群模式的关键特点和工作原理:

  1. 数据分片: Redis 集群会将数据分成多个数据分片,每个数据分片会被存储在不同的节点上。这样可以有效地将数据分布到多个节点,提高了系统的扩展性和性能。

  2. 高可用性: Redis 集群在设计上具有高可用性,每个数据分片都有多个副本,确保了即使有节点发生故障,数据仍然可用。集群支持自动故障转移,可以将一个从节点升级为新的主节点,从而保证了系统的可用性。

  3. 分布式故障检测: Redis 集群采用多个节点进行故障检测,当某个节点故障时,其他节点可以检测到,并协调进行故障转移。

  4. 节点间通信: Redis 集群中的节点之间通过二进制协议进行通信,实现数据同步、故障检测和节点状态的维护。

  5. 自动数据迁移: 当增加或删除节点时,Redis 集群可以自动进行数据迁移,确保数据在不同节点之间平衡分布。

  6. 数据一致性: Redis 集群通过使用哈希槽来分布数据,确保相同键的数据都会被存储在同一个节点上,从而保证了数据的一致性。

  7. 读写分离: Redis 集群支持客户端进行读写分离,即读操作可以从多个节点中的任意一个节点读取数据,而写操作会被发送到主节点。

  8. 节点扩展: 当需要扩展 Redis 集群的容量时,可以通过添加新的节点来实现。Redis 集群会自动将部分数据迁移到新的节点上,从而实现容量的扩展。

Redis 集群模式适用于需要高可用性、高性能和分布式能力的场景,特别是在面对大规模数据和高并发请求时。它可以有效地管理和分布数据,提供了更高级别的可用性和可扩展性,但也需要一些额外的配置和管理工作,特别是集群化配置,是一个比较费力的地方,如何进行资源分配,甚至是扩容缩容,涉及到弹性架构,是一个比较高大上的技术。当然,也有docker部署方式,可以尝试一下,很好玩,很有趣!!!

四大模式区别

我们分别介绍了 Redis 的单机模式、主从模式,哨兵模式和集群模式。下面我会对这4种模式进行简要的比较,更好地理解它们之间的区别。

  1. 单机模式:

    • 概述:Redis 单机模式是最简单的部署模式,只有一个 Redis 实例在单个服务器上运行。
    • 优点:简单易用,适合小规模应用或开发环境。可以用作缓存、临时存储等。
    • 缺点:不具备高可用性,如果单点故障,会导致数据不可用。不适用于高并发和大规模应用。
  2. 主从模式:

    • 概述:Redis 主从模式通过主节点和从节点组成,从节点复制主节点的数据,用于提高可用性和读写分离。
    • 优点:提供了一定程度的高可用性和读写分离。可以应对主节点故障,实现快速故障转移。
    • 缺点:主节点故障时需要手动升级从节点为新的主节点,存在一定的停机时间。不适合大规模写入和数据分布场景。
  3. 哨兵模式:

    • 概述:Redis 哨兵模式通过一组哨兵进程监控主从节点的状态,自动进行故障转移。
    • 优点:提供了自动化的高可用性,能够自动检测主节点故障并实现快速故障转移。适用于需要高可用性的场景。
    • 缺点:故障转移可能导致短暂的服务中断。配置和管理相对复杂。
  4. 集群模式:

    • 概述:Redis 集群模式通过将多个节点组成集群,实现数据分片和高可用性。
    • 优点:提供了高可用性、可扩展性和数据分布能力。自动数据分片和故障转移,适用于大规模和高并发场景。
    • 缺点:配置和管理相对复杂,需要维护多个节点。

综合来说,不同的 Redis 部署模式适用于不同的需求和场景。如果你需要简单的数据存储或开发测试环境,可以考虑单机模式。如果需要一定的高可用性和读写分离,可以选择主从模式。如果需要更高级别的自动化高可用性和故障转移,可以使用哨兵模式。而如果需要高可用性、可扩展性和数据分布能力,可以选择集群模式。在选择模式时,要根据你的应用需求、可用性要求和性能要求来进行权衡和决策。

而且在以前的文章中,因为涉及到docker集群化部署,我专门出过一片详细的文章关于部署Redis集群,大家了可以有兴趣看看!
docker 部署Redis集群节点
根据我短暂的项目经验,目前尚且没有遇到大型的系统,所以也就没有使用到集群模式,就是单机版,实现token鉴权或者是用户个人数据存储,没有那个高级的需求,但是,没有不代表以后不需要,大家希望多多了解,多多实践,机会总是留给有准备的人!

各自应用场景

不同的 Redis 部署模式适用于不同的应用场景。以下是针对不同场景的建议:

  1. 单机模式:
    • 适用场景:开发测试环境、小规模应用、临时数据存储、缓存数据、临时计数器等。
  2. 主从模式:
    • 适用场景:读多写少的应用、提高读取性能、部分数据冗余备份。
  3. 哨兵模式:
    • 适用场景:需要自动化高可用性和故障转移的场景、对数据可用性要求较高。
  4. 集群模式:
    • 适用场景:需要高可用性、高性能和数据分布的大规模应用、大规模写入和读取场景。

综合来看,选择合适的 Redis 部署模式取决于你的应用需求和优先级。如果你需要简单的缓存或临时存储,可以选择单机模式。如果需要读写分离和一定程度的高可用性,可以选择主从模式。如果对高可用性要求较高且不想手动管理故障转移,可以选择哨兵模式。而如果需要高可用性、可扩展性和数据分布,可以选择集群模式。无论选择哪种模式,都需要根据实际需求进行权衡和决策。

立秋了,2023的夏天已经成为昨天,祝福我们吧,祝福我们彼此,天凉好个秋,万事胜意!加油!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/850178.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据连接,图文档与BOM数据紧密相连

在现代制造业的产品开发和生产过程中,图文档和BOM数据是不可或缺的重要信息。图文档记录了产品的设计和工程数据,而BOM数据明确了产品所需物料的清单和规格。然而,由于图文档和BOM数据分属不同的系统,数据之间的连接和共享往往成为…

赢在起跑线:美国计算机读研规划攻略

以下是一个去美国学计算机的读研规划,供您参考:01 基础准备 学术准备:在本科阶段,您需要确保已经掌握了计算机科学的基本知识和技能,包括计算机体系结构、编程语言、数据结构和算法等。同时,建议您参与一…

[学习笔记]微信小程序全套开发流程(ing)

https://www.bilibili.com/video/BV1mV4y1o7fu 1.整体概述 2.环境搭建 略 4.纯净版项目 5.快速入门 5.1组件(类似HTML标签) wxml中的标签html中的标签textspanviewdivimageimgiconnavigatora view组件 <view><view class"c0">学生&#xff1a;<…

怎样理解黑盒测试和白盒测试?二者有什么关系

按照使用的测试技术可以将软件测试分为黑盒测试与白盒测试。 &#xff08;1&#xff09;黑盒测试 黑盒测试就是把软件(程序)当作一个有输入与输出的黑匣子&#xff0c;它把程序当作一个输入域到输出域的映射&#xff0c;只要输入的数据能输出预期的结果即可&#xff0c;不必关…

吉利科技携手企企通,打造集团化数智供应链系统

近日&#xff0c;吉利科技集团有限公司&#xff08;以下简称“吉利科技”&#xff09;联合企企通成功召开SRM采购供应链管理项目启动会。企企通与吉利科技高层、项目负责人与团队成员出席此次启动会。 双方将携手在企业供应商全生命周期管理、采购全流程、电子招投标、采购分析…

打造本地户外装备小程序商城教程大揭秘

在如今的移动互联网时代&#xff0c;小程序已经成为了各行各业的发展利器。尤其对于户外用具行业来说&#xff0c;一个专属的小程序商城将能够极大地提升企业的品牌形象和销售业绩。下面就来介绍一下快速上手制作户外用具小程序的攻略吧。 首先&#xff0c;登录乔拓云平台进入商…

TDengine + Telegraf + Grafana 实现图形化服务器状态监控

TDengine Telegraf Grafana 实现图形化服务器状态监控 技术栈环境搭建安装tdenginue下载安装包解压文件运行安装文件启动td运行 taosAdapter 安装Telegraf添加yum源安装生成配置文件修改配置文件启动telegraf 安装Grafana直接yum安装安装td数据源配置启动Grafana配置数据源导…

2021年12月 Python(一级)真题解析#中国电子学会#全国青少年软件编程等级考试

一、单选题(共25题,每题2分,共50分) 第1题 昨天的温度是5摄氏度,今天降温7摄氏度,今天的温度是多少摄氏度? A:12 B:7 C:2 D:-2 正确的答案是 D:-2。 解析: 根据题目描述,昨天的温度是 5 摄氏度,今天降温了 7 摄氏度。降温意味着温度变低,所以今天的温度…

嵌入式开发实用工具——QFSViewer

嵌入式开发实用工具——QFSViewer 介绍 今天给大家推荐个我个人业余时间开发的一个嵌入式开发实用工具——QFSViewer&#xff0c;这个工具主要是用来加载查看各种嵌入式常用的文件系统映像&#xff0c;目前支持JFSS2、Fat32、Fat16、Fat12、exFat、Ext2、Ext3、Ext4等文件系统…

性能测试之性能测试指标详解(详细)

前言 刚开始&#xff0c;以为做性能测试&#xff0c;就是做些脚本、参数化、关联&#xff0c;压起来之后&#xff0c;再扔出一个结果。 但实际上不止这些内容&#xff0c;还要加上性能分析&#xff0c;关注调优之后响应时间有多大的提升&#xff0c;TPS 有多大的提高&#xf…

区块链学习6-长安链部署:如何创建特定共识节点数和同步节点数的链

正常prepare的时候只支持4 7 13 16个节点个数&#xff0c;想要创建10个节点&#xff0c;其中5个是共识节点&#xff0c;如何实现&#xff1f; 1. 注释掉prepare.sh的这几行&#xff1a; 2. 修改 crytogen的模板文件&#xff1a; 如果是cert模式&#xff1a;chainmaker-crypt…

CTF流量题解tcp1

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

LeetCode刷题笔试(一起来算法打卡吧!!!)

文章目录 力扣刷题笔记&#xff08;每日更新~&#xff09;一、什么是时间复杂度&#xff1f;二、什么是递归&#xff1f;三、刷题记录leetcode 70-爬楼梯剑指offer 10-斐波那契数列 四、参考地址 力扣刷题笔记&#xff08;每日更新~&#xff09; 提示&#xff1a;这里可以添加…

PY32F003 FLASH

了解py32芯片的flash内容&#xff0c;对于py32进行api升级有更好的了解的操作 //uiOffset 0(4MHz), 1(8MHz), 2(16MHz), 3(22.12MHz), 4(24MHz) void SetFlashParameter(uint32_t uiOffset) {WRITE_REG(FLASH->KEYR, FLASH_KEY1);WRITE_REG(FLASH->KEYR, FLASH_KEY2); …

Android Studio翻译插件

进入File->Settings->Plugins界面&#xff0c;搜索Translation&#xff0c;选择这个 重启AS后&#xff0c;选中目标单词右键点击Translate即可&#xff1a;

MYSQL06高级_为什么使用索引、优缺点、索引的设计、方案、聚簇索引、联合索引、注意事项

文章目录 ①. 为什么使用索引②. 索引及其优缺点③. InnoDb - 索引的设计④. InnoDb中的索引方案⑤. 索引 - 聚簇索引⑥. 索引 - 二级索引⑦. B树索引的注意事项⑧. MyISAM中索引方案 ①. 为什么使用索引 ①. 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比去图书馆…

pytest测试框架之mark标记功能详细介绍

mark标记 ​ 在实际工作中&#xff0c;我们要写的自动化用例会比较多&#xff0c;也不会都放在一个py文件中&#xff0c;如果有几十个py文件&#xff0c;上百个方法&#xff0c;而我们只想运行当中部分的用例时怎么办&#xff1f; ​ pytest提供了一个非常好用的mark功能&…

机械厂工厂360全景展示拍摄制作,以便随时随地进行展示和更新

随着5G互联网技术的不断发展&#xff0c;线上全景虚拟展示已经成为了一种重要的展示方式。在工业领域中&#xff0c;厂区线上全景虚拟展示的应用也越来越广泛。 厂区线上vr全景虚拟展示是VR全景制作公司公司借助VR全景和web3d开发技术把企业的环境、研发、生产、产品、质检、仓…

06-2_Qt 5.9 C++开发指南_自定义对话框及其调用

本篇介绍到的对话框及其调用实例较为复杂但十分详细&#xff0c;如果做了解可以先参考&#xff1a;QT从入门到实战x篇_13_模态和非模态对话框创建。 文章目录 1. 对话框的不同调用方式2. 对话框QWDialogSize 的创建和使用2.1 创建对话框QWDialogSize2.2 对话框的调用和返回值 …

【数据结构功法】第八话 · 树与二叉树的基本概念

目录 &#x1f37a;知识点9&#xff1a;树的概念与性质 &#x1f36f;9.1 树的逻辑结构与性质 &#x1f34a;1.树的逻辑结构 &#x1f34a;2.树的相关术语 &#x1f34a;3.树的性质 &#x1f4dc;习题检测 &#x1f36f;9.2 二叉树的的定义与性质 &#x1f34a;1.二叉树…