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.mzph.cn/news/32555.shtml

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

相关文章

数据分析两件套ClickHouse+Metabase(二)

Metabase篇 Metabase安装部署 任何问题请查看 -> 官方文档 jar包从GitHub下载 -> 地址 同样有个问题, 默认数据源里没有ClickHouse, 不过ClickHouse官方提供了插件包 -> 插件包 在安装metabase目录下新建一个plugins文件夹, 把下载的clickhouse.metabase-driver.ja…

spark 图计算 助力解决 dataframe中的链式依赖

链式依赖说明 name newName a b c d b c 我们需要的结果 即我们可以支持获取到链式转换的 起点 重点 以及链式的中间转换过程顺序数组. 特别说明: 出版只支持 单向 无分叉的图,其他复杂场景暂时未测试. 场景举例: 比如某件商品价格变化,我们需要知…

手机里视频太大怎么压缩?压缩教程分享

现在视频文件的体积越来越大了,动不动就是几个GB起步,如果后期再剪辑处理一下,更是会占据更多的设备空间了,还会导致我们传输受到限制,这时候就需要我们对视频进行压缩处理,下面给大家分享几个简单的方法&a…

0基础学习VR全景平台篇 第83篇:智慧眼-怎么理解分类?

一、功能说明 分类可以理解为,为了方便城市运营工作的管理所实行的行政区划,如XXX乡镇、XXX街道等等。 二、后台编辑界面 1、点击【新增】,填写分类的名称,若有上一级分类,那么还需选择父级分类,建议从最…

Vue组件库

Vue组件库 ViteVue3TypescriptTSX 1、项目搭建 1.1、创建项目(yarn) D:\WebstromProject>yarn create vite yarn create v1.22.19 [1/4] Resolving packages... [2/4] Fetching packages... [3/4] Linking dependencies... [4/4] Building fresh pa…

Anaconda Prompt使用pip安装PyQt5-tools后无法打开Spyder或闪退

艹!MLGBZD! 真TMD折腾人! 出现原因: 首次安装完Anaconda3-2023.07-1-Windows-x86_64.exe后首次打开Spyder,此时是没有问题的,然后打开Anaconda Prompt,查看有哪些包,pip list 这时候开始首次安…

RCNA——单臂路由

一,实验背景 之前的VLAN实现的很多都是相同部门互相访问,不同部门无法访问。不过这次整来了一个路由器,领导说大部分的部门虽说有保密信息需要互相隔离,但是这些部门和其它部门也应该互相连通以方便工作交流。因此要配置新的环境&…

springboot汽车租赁后台java出租客户管理jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 springboot汽车租赁后台 系统有1权限:管理…

MySQL缓存策略

文章目录 一、MySQL缓存方案的作用二、提高MySQL访问性能的方式2.1 读写分离2.1.1 是什么?2.1.2 解决了什么?2.1.3 原理是什么? 2.2 连接池2.1.1 是什么?2.1.2 解决了什么?2.1.3 原理是什么? 2.3 异步连接2…

同步_异步请求和Ajax并利用axios框架简化

目录 同步和异步 原生的Ajax 创建XMLHttpRequest对象 常用方法 常用属性 axios框架 同步和异步 同步请求:发送请求后,会做出回应,回应的内容会覆盖浏览器中的内容,这样会打断其他正常的操作,显得不太友好&#…

springboot第35集:微服务与flutter安卓App开发

Google Playplay.google.com/apps/publis…[1]应用宝open.qq.com/[2]百度手机助手app.baidu.com/[3]360 手机助手dev.360.cn/[4]vivo 应用商店dev.vivo.com.cn/[5]OPPO 软件商店(一加)open.oppomobile.com/[6]小米应用商店dev.mi.com/[7]华为应用市场dev…

python项目virtualenv环境部署正式项目和后台运行实践

pycharm创建virtualenv环境的项目: 在本地虚拟环境项目路径下生成依赖包记录文件,然后上传到linux 服务器项目路径下: 注意注意:要在虚拟环境中生成,才能将所有的项目依赖包构建在 requirements.txt文件中。 pip3 fre…

学习笔记-JVM监控平台搭建

SpringBoot Actuator 1 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId> </dependency>2 开启配置 # 暴露所有的监控点【含Prometheus】 management.endpoin…

Java课题笔记~ JSP内置对象

(1)九个内置对象 jsp的内置对象&#xff1a;JSP内置对象是不需要声明和创建就可以在JSP页面脚本中使用的成员变量。 九个内置对象&#xff1a; 1.out对象 在JSP页面中&#xff0c;经常需要向客户端发送文本内容&#xff0c;这时&#xff0c;可以使用out对象来实现。out对象…

Kubernetes Service 工作原理

本文介绍了 Kubernetes Service 的概念、原理和具体使用。 作者&#xff1a;沈亚军 爱可生研发团队成员&#xff0c;负责公司 DMP 产品的后端开发&#xff0c;爱好太广&#xff0c;三天三夜都说不完&#xff0c;低调低调… 本文来源&#xff1a;原创投稿 爱可生开源社区出品&am…

2023牛客暑期多校训练营8-I Make It Square

2023牛客暑期多校训练营8-I Make It Square https://ac.nowcoder.com/acm/contest/57362/I 文章目录 2023牛客暑期多校训练营8-I Make It Square题意解题思路代码实现 题意 解题思路 这里有两种情况&#xff0c;即 ∣ s ∣ > ∣ t ∣ |s|>|t| ∣s∣>∣t∣和 ∣ s ∣…

ffmepg滤镜

视频按顺时针方向旋转90度 ffplay -vf transpose1 -i juren-30s.mp4 ffplay -f lavfi -i testsrc -vf transpose1 -f lavfi -i testsrc这个滤镜是ffmpeg给用户的一个测试使用的视频 视频水平翻转(左右翻转) -vf hflip 实现慢速播放&#xff0c;声音速度是原始速度的50% ffpla…

skywalking忽略调用链路中的指定异常

文章目录 一、介绍二、演示项目介绍1. 支付服务2. 订单服务 三、项目演示1. 未忽略异常2. 忽略异常修改配置使用注解 四、结论 往期内容 一、skywalking安装教程 二、skywalking全链路追踪 三、skywalking日志收集 一、介绍 在前面介绍在微服务项目中使用skywalking进行全链…

web后端解决跨域问题

目录 什么是跨域问题 为什么限制访问 解决 什么是跨域问题 域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做&#xff0c;它是由浏览器的同源策略造成的&#xff0c;是浏览器对js施加的安全…

机器学习基础之《特征工程(4)—特征降维—案例》

一、探究用户对物品类别的喜好细分 1、找到用户和物品类别的关系 数据如下&#xff1a; &#xff08;1&#xff09;order_products__prior.csv&#xff1a;订单与商品信息 字段&#xff1a;order_id&#xff0c;product_id&#xff0c;add_to_cart_order&#xff0c;reordered…