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

在这里插入图片描述

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.rhkb.cn/news/81038.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何搭建自动化测试框架?资深测试整理的PO模式,一套打通自动化...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 Po模型介绍 1、简…

24届华东理工大学近5年自动化考研院校分析

今天给大家带来的是华东理工大学控制考研分析 满满干货~还不快快点赞收藏 一、华东理工大学 学校简介 华东理工大学原名华东化工学院,1956年被定为全国首批招收研究生的学校之一,1960年起被中共中央确定为教育部直属的全国重点大学&#…

匈牙利算法详解

匈牙利算法(Hungarian Algorithm)是一种组合优化算法(combinatorial optimization algorithm),用于求解指派问题(assignment problem),算法时间复杂度为O(N^3)。Harold Kuhn发表于1955年,由于该算法基于两位匈牙利数学家的早期研究成果&#…

基于智慧路灯杆的智慧交通应用示例

智慧路灯杆的身影已经越来越频繁出现在我们的生活之中,无论是我们开车在路上,还是行走在商业街,造型美轮美奂,功能丰富多样的智慧路灯杆,也已经成为了一道独特靓丽的街景。 智慧路灯杆如何发挥其智慧功能?对…

Zabbix6.0监控

文章目录 一、Zabbix简介1)zabbix 是什么?2)zabbix 监控原理3)Zabbix 6.0 新特性1、Zabbix server高可用防止硬件故障或计划维护期的停机2、Zabbix 6.0 LTS新增Kubernetes监控功能,可以在Kubernetes系统从多个维度采集…

The ‘kotlin-android-extensions‘ Gradle plugin is no longer supported.

Android使用kotlin开发,运行报错 The kotlin-android-extensions Gradle plugin is no longer supported. Please use this migration guide (https://goo.gle/kotlin-android-extensions-deprecation) to start working with View Binding (https://developer.an…

一文了解 Android Auto 车载开发~

作者:牛蛙点点申请出战 背景 我的的产品作为一个海外音乐播放器,在车载场景听歌是一个很普遍的需求。在用户反馈中,也有很多用户提到希望能在车上播放音乐。同时车载音乐也可以作为提升用户消费时长一个抓手。 出海产品,主要服务…

【单片机】51单片机,晨启科技,板子引脚对应关系

一般引脚: sbit beepP2^4; //将单片机的P2.4端口定义为beep.本口用于屏蔽上电后蜂鸣器响 sbit ledP1^0; //将单片机的P1.0端口定义为led,用于点亮LED-D1 sbit DIG1P0^0; //数码管位选1 sbit DIG2P0^1; //数码管位选2P10xFF;//初始化P1引脚全部置高&a…

Linux中singal信号的作用

void&#xff08;* signal&#xff08;int sig&#xff0c;void&#xff08;* func&#xff09;&#xff08;int&#xff09;&#xff09;&#xff09;&#xff08;int&#xff09;;设置处理信号的功能 头文件为&#xff1a;#include <signal.h> 指定使用sig指定的信号…

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测

时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测 目录 时序预测 | MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-GRU贝叶斯优化门控循环单元时间序列预测。基于贝叶斯(bayes)…

Spring MVC

hi,今天为大家带来Spring MVC相关知识 文章目录 &#x1f33b;1.什么是Spring MVC?&#x1f36c;1.1什么是MVC?&#x1f36c;1.2MVC和Spring MVC的关系 &#x1f33b;2.Spring MVC的意义&#x1f36c;2.1Spring MVC和Spring Boot区别 &#x1f33b;3.Spring MVC的三大要点&a…

用PointNet分类3D点云

在本教程中&#xff0c;我们将学习如何训练PointNet进行分类。 我们将主要关注数据和训练过程&#xff1b; 展示如何从头开始编码 Point Net 的教程位于此处。 本教程的代码位于这个Github库中&#xff0c;我们将使用的笔记本位于这个Github库中。 一些代码的灵感来自于这个Git…

wordpress 打开缓慢处理

gravatar.com 头像网站被墙 追踪发现请求头像时长为21秒 解决方案一 不推荐&#xff0c;容易失效&#xff0c;网址要是要稳定为主&#xff0c;宁愿头像显示异常&#xff0c;也不能网址打不开 网上大部分搜索到的替换的CDN网址都过期了&#xff0c;例如&#xff1a;gravatar.du…

知识付费系统开发:构建高效智能的付费内容平台

随着数字化时代的来临&#xff0c;知识付费正迅速崭露头角&#xff0c;为知识创作者和求知者带来了全新的商机。在这个背景下&#xff0c;开发一款高效智能的知识付费系统成为了一项重要的任务。本文将深入探讨如何基于Python编程语言和相关技术构建一个智能的知识付费内容平台…

备份容灾哪家好怎么样

数字化时代&#xff0c;数据安全是我们不容忽视的问题。云呐容灾备份系统不仅提供了强大的数据保护功能&#xff0c;而且操作简单&#xff0c;使用方便。无论你是企业管理员&#xff0c;还是个人用户&#xff0c;都可以轻松上手。它还提供了丰富的报告和监控功能&#xff0c;让…

Unity 实现字幕打字效果

Text文本打字效果&#xff0c;TextMeshPro可以对应参考&#xff0c;差距不大&#xff0c;改改参数名就能用。改脚本原本被我集成到其他的程序集中&#xff0c;现在已经分离。 效果 实现功能 1.能够设置每行能够容纳的字数和允许的冗余 2.打字效果 3.每行打完上移 4.开头进入&…

springboot(1)

精要&#xff1a; 自动配置&#xff1a;针对很多Spring应用程序常见的应用功能&#xff0c;Spring Boot能自动提供相关配置。 起步依赖&#xff1a;告诉Spring Boot需要什么功能&#xff0c;它就能引入需要的库。 命令行界面&#xff1a;这是Spring Boot的可选特性&#xff0…

嵌入式开发学习(STC51-18-LCD液晶显示)

内容 在LCD1602液晶上显示字符信息&#xff1b; LCD1602介绍 简介 1602液晶也叫1602字符型液晶&#xff0c;它能显示2行字符信息&#xff0c;每行又能显示16个字符&#xff1b; 它是一种专门用来显示字母、数字、符号的点阵型液晶模块&#xff1b; 它是由若干个5x7或者5x…

座舱开发的“道”与“术”

前言&#xff1a; 近年来&#xff0c;随着汽车“新四化”浪潮的兴起&#xff0c;软件定义已成为产业共识&#xff0c;将深度参与到整个汽车的定义、开发验证销售以及服务全过程。一方面确保软件可升级&#xff0c;跨车型、软件甚至跨车企软件重用。另一方面对于硬来讲&#xf…

任务 13、MidJourney种子激发极致创作,绘制震撼连贯画作

13.1 任务概述 通过本次实验任务&#xff0c;学员将深入了解Midjourney种子的概念和重要性&#xff0c;以及种子对生成图像的影响。他们将学会在Midjourney平台中设置种子值并调整其参数&#xff0c;以达到所需的效果。此外&#xff0c;任务还详细介绍了Midjourney V4.0版本中…