Redis 讲解运行模式:单机、主从、哨兵、集群使用场景和区别

Redis 讲解运行模式:单机、主从、哨兵、集群使用场景和区别

Redis 是一个广泛使用的内存数据结构存储系统,支持丰富的数据结构和高效的操作。为了满足不同场景下的需求,Redis 提供了多种运行模式,包括单机模式、主从复制模式、哨兵模式和集群模式。本文将深入探讨这四种模式,并结合电商交易系统的案例进行详细说明,帮助读者理解 Redis 各种模式的使用场景、区别以及优缺点。


第1章:Redis 单机模式

1.1 单机模式概述

Redis 的单机模式是最基本的运行模式,即在一台服务器上运行一个 Redis 实例。所有数据都存储在该实例的内存中,用户通过 Redis 提供的命令对数据进行操作。这种模式适用于数据量较小且不要求高可用性和分布式的应用场景。

1.2 单机模式的使用场景

单机模式通常用于开发、测试环境,或者数据量和并发请求都较低的生产环境。由于 Redis 的操作速度非常快,单机模式能够在大部分情况下满足需求。

示例场景

在一个小型电商交易系统中,单机模式的 Redis 可以用于实现购物车功能,用户的购物车数据存储在 Redis 中,通过简单的键值操作即可快速完成购物车的增删改查操作。

# 启动 Redis 单机模式
redis-server
# 将商品添加到用户的购物车
SET user:1001:cart:product:2001 1
1.3 单机模式的优缺点

优点

  • 简单易用:配置简单,易于安装和使用。
  • 高性能:由于所有数据都存储在内存中,操作非常快。
  • 适合小规模应用:适用于数据量和并发请求较少的应用。

缺点

  • 单点故障:如果 Redis 实例宕机,所有数据将不可用。
  • 数据丢失风险:由于数据存储在内存中,如果没有配置持久化,Redis 宕机会导致数据丢失。
  • 扩展性差:难以应对数据量增加和并发请求增多的情况。

第2章:Redis 主从复制模式

2.1 主从复制模式概述

Redis 主从复制模式通过配置多个 Redis 实例,其中一个实例为主节点(Master),其余为从节点(Slave)。主节点处理所有写请求,并将数据同步到从节点。读请求可以由主节点或从节点处理,从而分担了主节点的负载。

2.2 主从复制模式的使用场景

主从复制模式适用于读多写少的应用场景,通过将读请求分散到从节点,可以提高系统的读取性能和数据的可用性。

示例场景

在电商交易系统中,Redis 主从复制模式可以用于用户订单的缓存。订单数据写入主节点,读取操作可以由从节点处理,从而提升系统的读性能。

# 配置从节点
slaveof 127.0.0.1 6379
# 从节点读取订单数据
GET order:1001
2.3 主从复制模式的优缺点

优点

  • 提高读性能:通过将读请求分散到从节点,减轻主节点压力。
  • 数据冗余:从节点保存主节点的数据副本,增强数据的可用性。

缺点

  • 一致性问题:主从节点之间存在数据同步延迟,可能导致读取到旧数据。
  • 不支持自动故障转移:如果主节点宕机,需要手动将从节点提升为主节点。

第3章:Redis 哨兵模式

3.1 哨兵模式概述

Redis 哨兵模式是在主从复制模式基础上,增加了哨兵节点(Sentinel)。哨兵节点负责监控主节点和从节点的状态,当主节点宕机时,哨兵会自动将某个从节点提升为新的主节点,并通知应用程序新的主节点信息。

3.2 哨兵模式的使用场景

哨兵模式适用于对高可用性要求较高的场景,通过自动故障转移,能够保证系统的持续运行,即使主节点发生故障也不会影响业务。

示例场景

在电商交易系统中,哨兵模式可以用于商品库存的缓存。如果主节点宕机,哨兵会自动切换到从节点,保证库存数据的实时性和可用性。

# 启动哨兵
redis-sentinel /etc/redis/sentinel.conf
3.3 哨兵模式的优缺点

优点

  • 高可用性:通过哨兵的监控和自动故障转移,保障系统的高可用性。
  • 自动化管理:哨兵自动处理主从切换,无需人工干预。

缺点

  • 部署复杂:需要额外的哨兵节点,增加了部署和运维的复杂度。
  • 数据一致性:与主从复制模式一样,可能存在数据同步延迟的问题。

第4章:Redis 集群模式

4.1 集群模式概述

Redis 集群模式是 Redis 提供的分布式解决方案,允许将数据分布在多个节点上,并且每个节点可以继续拥有主从结构。集群通过自动分片(sharding)机制,将数据分布到不同的主节点,并实现节点间的数据同步和故障转移。

4.2 集群模式的使用场景

集群模式适用于需要处理大量数据和高并发请求的大型分布式系统。通过数据分片和负载均衡,集群模式可以有效地提升系统的性能和扩展能力。

示例场景

在电商交易系统中,Redis 集群模式可以用于大规模用户的会话管理。每个用户的会话数据可以分片存储在不同的节点上,从而提高系统的响应速度和数据处理能力。

# 创建 Redis 集群
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
4.3 集群模式的优缺点

优点

  • 高扩展性:通过分片机制,可以轻松扩展集群容量和处理能力。
  • 高可用性:集群支持主从复制和自动故障转移,保障系统的高可用性。

缺点

  • 数据复杂性:集群模式增加了数据管理的复杂性,特别是在处理跨节点的操作时。
  • 网络开销:集群模式中节点间的通信会增加网络开销,可能影响性能。

第5章:各模式的对比与选择

在不同的应用场景下,选择合适的 Redis 模式是确保系统稳定性和高性能的关键。以下是对各模式的综合对比:

模式使用场景优点缺点
单机模式开发、测试环境,小型应用简单易用,性能高单点故障,扩展性差
主从模式读多写少的应用,适合提高读性能提高读性能,数据冗余数据一致性问题,不支持自动故障转移
哨兵模式高可用性要求高的应用自动故障转移,高可用性部署复杂,存在数据同步延迟
集群模式大型分布式系统,需要高扩展性和高可用性高扩展性,数据分片,自动故障转移数据管理复杂,存在网络开销

第6章:总结

Redis 提供了多种模式,以满足不同应用场景的需求。在实际应用中,根据系统的规模、性能要求和高可用性需求选择合适的模式至关重要。单机模式适合小规模应用,主从模式适合读多写少的场景,哨兵模式保证高可用性,而集群模式则为大规模分布式系统提供了强大的支持。

为了确保 Redis 系统的稳定性和性能,建议在部署前进行充分的测试,并结合业务特点选择最合适的 Redis 模式。

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

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

相关文章

MySQL创建数据库和数据表

文章目录 MySQL创建数据库和数据表一、引言二、创建数据库1、创建数据库的基本语法2、示例 三、设计和创建数据表1、设计表2、创建表3、示例 四、总结 MySQL创建数据库和数据表 一、引言 在数据库的世界中,MySQL 以其高性能、可靠性和易用性而广受欢迎。无论是开发…

单片机内存区域划分

目录 一、C 语言内存分区1、栈区2、堆区3、全局区(静态区)4、常量区5、代码区6、总结 二、单片机存储分配1、存储器1.1 RAM1.2 ROM1.3 Flash Memory1.4 不同数据的存放位置 2、程序占用内存大小 一、C 语言内存分区 C 语言在内存中一共分为如下几个区域…

【生日视频制作】农村大马路绿色墙体广告标语喷漆AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程农村大马路墙体广告标语喷漆AE模板改文字素材 怎么如何做的【生日视频制作】农村大马路绿色墙体广告标语喷漆AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤: 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出…

【最新消息】211高校,拟撤销测绘工程专业

近日,中国石油大学(北京)教务处发布《关于公示2024年度拟撤销本科专业的通知》,拟撤销音乐学、建筑学、测绘工程等9个本科专业。 通知内容如下: 根据《教育部高等教育司关于开展2024年度普通高等学校本科专业设置工作的…

【STM32】IIC

超级常见的外设通信方式,一般叫做I方C。 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基本概念 1.1 总线结构 1.2 IIC协议 1.3 软件模拟IIC逻辑 2 AT24C02 2.1 设备地址与…

一次VUE3 使用axios调用萤石云OpenAPI踩坑经历

通过调用萤石云的获取设备列表功能,我们可以根据 ACCESS_TOKEN 获取该用户下的设备列表。 Python 调用接口 根据接口文档[1],使用Python,很轻松就能获取到该列表,代码如下(该代码用于拼接生成vue代码,这是…

Codeforces Round 969 (Div. 2) 题ABC详细题解,包含(C++,Python语言描述)

前言: 首先让我们恭喜tourist创造历史 他是第一,他又是第一,他总是第一,第一个codefores上4000分的,创造一个新的段位:Tourist,他的名字就是一个新的段位,他就是最高的山,最长的河 本…

基于Python的机器学习系列(18):梯度提升分类(Gradient Boosting Classification)

简介 梯度提升(Gradient Boosting)是一种集成学习方法,通过逐步添加新的预测器来改进模型。在回归问题中,我们使用梯度来最小化残差。在分类问题中,我们可以利用梯度提升来进行二分类或多分类任务。与回归不同&#xf…

react中修改组件样式的几种方法

使用自定义类名className&#xff0c;引入样式文件进行样式覆盖 import React from react; import { Button } from antd;const MyComponent () > {return (<Button className"custom-button">点击我</Button>); };export default MyComponent;.cus…

访问win10共享文件夹:用户或密码不正确 以及 未授予用户在此计算机上的请求登录类型

因为安装的是神州网信政府版&#xff0c;该版本通常包含更严格的安全策略和访问控制&#xff0c;设置了共享文件夹后&#xff0c;访问共享文件夹时出现错误。 1、首先报错&#xff1a;用户或密码不正确 将》网络访问&#xff1a;本地账户的共享和安全模型&#xff0c;修改为&a…

开源通用验证码识别OCR —— DdddOcr 源码赏析(二)

文章目录 前言DdddOcr分类识别调用识别功能classification 函数源码classification 函数源码解读1. 分类功能不支持目标检测2. 转换为Image对象3. 根据模型配置调整图片尺寸和色彩模式4. 图像数据转换为浮点数据并归一化5. 图像数据预处理6. 运行模型&#xff0c;返回预测结果 …

Python测试之测试覆盖率统计

本篇承接上一篇 Python测试框架之—— pytest介绍与示例&#xff0c;在此基础上介绍如何基于pytest进行测试的覆盖率统计。 要在使用 pytest 进行测试时检测代码覆盖率&#xff0c;可以使用 pytest-cov 插件。这个插件是基于 coverage.py&#xff0c;它能帮助你了解哪些代码部…

人工智能和机器学习5 (复旦大学计算机科学与技术实践工作站)语言模型相关的技术和应用、通过OpenAI库,调用千问大模型,并进行反复询问等功能加强

前言 在这个日新月异的AI时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术正以前所未有的速度改变着我们的生活方式和工作模式。作为这一领域的佼佼者&#xff0c;OpenAI不仅以其强大的GPT系列模型引领风骚&#xff0c;还通过其开放的API接口&#xff0c;让全球开…

Gamma软件处理D-InSAR获取形变步骤

1. 数据准备 获取数据 目标&#xff1a;通常你需要至少两张SAR图像&#xff1a;一个作为基准图像&#xff08;reference image&#xff09;&#xff0c;另一个作为目标图像&#xff08;secondary image&#xff09;。这些图像应在不同时间拍摄&#xff0c;且成像条件要尽可能…

哈工大-操作系统L30

文件使用磁盘的实现 fd文件描述符 buf内存缓冲区 count读写字符的个数 file->inode获得inode file_write写文件 inode映射表 读写的内存缓冲区buf,file字符流的位置200-212,根据inode提供的索引号找到块号,根据buf形成请求队列&#xff0c;再放入电梯队列 fseek调整读…

Jenkins安装使用详解,jenkins实现企业级CICD流程

文章目录 一、资料1、官方文档 二、环境准备1、安装jdk172、安装maven3、安装git4、安装gitlab5、准备我们的springboot项目6、安装jenkins7、安装docker8、安装k8s&#xff08;可选&#xff0c;部署节点&#xff09;9、安装Harbor10、准备带有jdk环境的基础镜像 三、jenkins实…

二叉树的最大深度(LeetCode)

题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 解题 # 定义二叉树节点的类 class TreeNode:def __init__(self, val0, leftNone, rightNone):self.val valself.left leftself.right right# …

力扣1235.规划兼职工作

力扣1235.规划兼职工作 动态规划 二分 将所有工作按照结束时间排序f[i]表示前i个工作可获取的最大收益状态转移&#xff1a;取第i个工作&#xff0c;f[i] profit[i] f[j]&#xff0c;其中j为结束时间小于i的开始时间的最大数不取第i个工作&#xff0c;f[i] f[i-1]可以通过二…

低代码开发平台:重塑未来软件开发格局的关键力量

低代码开发平台正以前所未有的速度改变着软件开发的面貌&#xff0c;通过最小化手动编码&#xff0c;让用户能够迅速构建应用程序。随着企业对敏捷性和创新能力的追求日益增强&#xff0c;这类平台的需求激增。展望未来&#xff0c;技术进步与市场动态将引领低代码开发进入新的…

【C++】探索inline关键字:用法、限制与示例代码

文章目录 前言相关性质用法优点限制和注意事项inline 函数的定义位置inline 和类成员函数inline 和 constexpr 前言 我们知道&#xff1a;对于C、C&#xff0c;在编译时遇到函数调用时&#xff0c;编译器会生成一个函数调用的代码&#xff0c;这包括跳转到函数的地址和处理返回…