当前位置: 首页 > article >正文

Redis——主从哨兵配置

目录

基础概念

‌一、核心原理‌

‌二、核心特性‌

‌三、技术意义与应用价值‌

‌四、典型应用场景‌

案例部署

‌一、主从复制配置命令‌

‌二、哨兵模式部署命令‌

‌关键注意事项‌


基础概念

一、核心原理

  1. 内存存储与高性能
    Redis 所有数据存储于内存中,读写操作直接在内存完成,避免磁盘 I/O 瓶颈。单线程模型(6.0 前)通过多路复用处理并发请求,确保原子性操作,延迟低至微秒级,支撑 10W+ QPS 高并发场景。

  2. 数据结构与对象系统

    • 底层数据结构‌:包括简单动态字符串(SDS)、双向链表、哈希表、跳表、压缩列表(ziplist)等。
    • 对象封装‌:通过 redisObject 结构体封装数据类型(如 String/Hash/List/Set/ZSet),动态选择最优编码(如 ziplist 或 hashtable),平衡内存与性能。
    • 示例‌:Hash 类型在元素少时使用 ziplist(节省内存),元素多时转为 hashtable(提升操作效率)。
  3. 持久化机制

    • RDB(快照)‌:定时生成内存数据的二进制快照,适合灾难恢复,但可能丢失最后一次快照后的数据。
    • AOF(日志追加)‌:记录每条写操作指令,支持实时持久化。通过重写机制压缩日志文件。
    • 混合模式‌(Redis 4.0+):结合 RDB 快照与 AOF 增量日志,平衡恢复速度与数据安全性。
  4. 集群与高可用

    • 主从复制‌:主节点(Master)异步同步数据到从节点(Slave),支持读写分离。断线重连后可触发全量同步(RDB 传输)或增量同步(缓冲区指令补发)。
    • Redis Cluster‌:分片存储数据至 16384 个哈希槽(Slot),节点间通过 Gossip 协议通信,支持自动故障转移与水平扩展。
    • 哨兵模式(Sentinel)‌:监控主节点状态,自动选举新主节点,实现高可用。

二、核心特性

特性说明
多数据结构支持String、List、Hash、Set、ZSet(有序集合)等,覆盖复杂业务场景(如排行榜、社交关系)。
原子性操作单线程模型保证命令原子执行,结合 Lua 脚本实现多操作原子性。
发布订阅(Pub/Sub)支持消息广播机制,用于简易消息队列。
过期与淘汰策略支持 TTL 过期时间,内存不足时启用 LRU/LFU/TTL 等淘汰算法。
事务支持通过 MULTI/EXEC 实现弱事务(不保证回滚)。

三、技术意义与应用价值

  1. 解决性能瓶颈
    作为缓存层,将热点数据置于内存,减轻后端数据库压力,提升响应速度(如秒杀系统)。

  2. 丰富数据模型支持
    超越传统 KV 存储,提供集合运算、范围查询、排序等能力,直接实现排行榜(ZSet)、好友关系(Set)等场景。

  3. 分布式系统基石

    • 分布式锁‌:通过 SETNX 命令实现跨进程互斥锁。
    • 消息队列‌:List 结构实现轻量级队列,Pub/Sub 支持实时消息推送。
    • 会话共享‌:集中存储用户 Session,支持水平扩展。
  4. 高可用架构支撑
    集群与哨兵模式保障服务连续性,满足企业级可用性要求。


四、典型应用场景

  • 缓存加速‌:数据库查询结果缓存。
  • 实时计数器‌:String 结构的原子增减(如浏览量统计)。
  • 排行榜‌:ZSet 按分数排序(如游戏积分榜)。
  • 社交功能‌:Set 实现共同关注、好友推荐。
  • 限流与分布式锁‌:控制 API 访问频率,协调分布式资源。

Redis 通过内存计算、灵活数据结构与分布式架构,重塑了高性能数据处理的范式,成为现代应用中缓解数据库压力、实现复杂逻辑的关键组件。其设计平衡了速度、灵活性与可靠性,在微服务、实时计算等领域持续发挥核心价值。

案例部署

一、主从复制配置命令

  1. 主节点配置

    • 主节点无需特殊配置,默认启动即为 Master 角色:
      redis-server /path/to/redis.conf 
    • 验证主节点状态:
      redis-cli -p 6379 info replication # 查看角色(role:master)及从节点连接数
  2. 从节点配置

    • 方式1‌:启动时指定主节点(临时生效)
      redis-server --slaveof <master-ip> <master-port> 
    • 方式2‌:运行时动态切换为主节点的从节点
      redis-cli -p 6380 slaveof <master-ip> <master-port> # 6380为从节点端口
    • 方式3‌:配置文件永久生效(推荐)
      修改从节点的 redis.conf
      slaveof <master-ip> <master-port> replica-read-only yes # 从节点只读
  3. 验证主从同步

    • 在主节点写入数据后,从节点执行:
      redis-cli -p 6380 get key_name # 检查数据是否同步

二、哨兵模式部署命令

  1. 哨兵配置文件
    创建 sentinel.conf,关键配置示例:

    sentinel monitor mymaster <master-ip> 6379 2 # 监控主节点,2表示至少2个哨兵同意才触发故障转移:ml-citation{ref="12,14" data="citationList"} sentinel down-after-milliseconds mymaster 5000 # 主节点5秒无响应视为主观下线:ml-citation{ref="14" data="citationList"} sentinel failover-timeout mymaster 60000 # 故障转移超时时间(毫秒):ml-citation{ref="11" data="citationList"} 
  2. 启动哨兵节点

    redis-sentinel /path/to/sentinel.conf # 每个哨兵节点独立启动:ml-citation{ref="12" data="citationList"} 
  3. 模拟故障转移测试

    • 手动停止主节点:
      redis-cli -p 6379 shutdown 
    • 观察哨兵日志,确认新主节点选举:
      tail -f /var/log/redis/sentinel.log # 输出包含"+failover"和"+switch-master":ml-citation{ref="12,14" data="citationList"} 
  4. 客户端重定向
    应用需配置哨兵节点地址而非直接连接主节点,哨兵会自动返回当前主节点信息。


关键注意事项

  • 主从复制‌:从节点重启后需重新执行 slaveof 命令或配置持久化。
  • 哨兵集群‌:至少部署3个哨兵节点以避免脑裂问题。
  • 网络互通‌:确保主从节点及哨兵间防火墙开放对应端口(如6379、26379)。

相关文章:

Redis——主从哨兵配置

目录 基础概念 ‌一、核心原理‌ ‌二、核心特性‌ ‌三、技术意义与应用价值‌ ‌四、典型应用场景‌ 案例部署 ‌一、主从复制配置命令‌ ‌二、哨兵模式部署命令‌ ‌关键注意事项‌ 基础概念 ‌一、核心原理‌ ‌内存存储与高性能‌ Redis 所有数据存储于内存中&…...

系统模块与功能设计框架

系统模块与功能设计框架&#xff0c;严格遵循专业架构设计原则&#xff0c;基于行业标准&#xff08;如微服务架构、DDD领域驱动设计&#xff09;构建。设计采用分层解耦模式&#xff0c;确保可扩展性和可维护性&#xff0c;适用于电商、企业服务、数字平台等中大型系统。 系统…...

我爱学算法之—— 前缀和(中)

一、724. 寻找数组的中心下标 题目解析 这道题&#xff0c;给定数组nums&#xff0c;要求我们找出这个数组的中心下标。 **中心下标&#xff1a;**指左侧所有元素的和等于右侧所有元素的和。 如果存在多个中心数组下标&#xff0c;就返回最左侧的中心数组下标。 算法思路 暴…...

leetcode sql50题

在中文站没找到对应的集合&#xff0c;想来自己动手拷贝过来&#xff0c;方便大家面试复习用&#xff0c;对应英文站点&#xff1a; https://leetcode.com/studyplan/top-sql-50/ Select #1757. 可回收且低脂的产品 链接: https://leetcode.cn/problems/recyclable-and-low-fa…...

word操作(持续更新)

1、图片前面&#xff08;无间隔格式&#xff09;&#xff0c;有像标题标记一样的黑点 word段落左边的黑色小方块小黑点是什么(段落的换行和分页属性)_哔哩哔哩_bilibili...

AURA智能助手在物联网(IoT)和数字化改造领域的使用

要设计一款在物联网(IoT)和数字化改造领域占据市场主导的AURA智能助手,产品经理需从行业痛点、技术架构、商业模式、生态整合四大维度切入,深度融合工业场景的特殊性。以下是系统性设计框架与落地策略: 一、精准定位:直击工业场景核心痛点 1. 解决企业级关键问题 场景痛…...

怎么把自己电脑设置成服务器?

将自己的电脑设置为服务器可以让您托管网站、文件共享或运行各种服务。以下是设置步骤&#xff1a; 基本设置步骤 ‌选择操作系统‌&#xff1a; Windows&#xff1a;可使用IIS&#xff08;Internet Information Services&#xff09;Linux&#xff1a;常用Apache、Nginx等mac…...

Elasticsearch从安装到实战、kibana安装以及自定义IK分词器/集成整合SpringBoot详细的教程ES(三)

DSL官方地址&#xff1a; DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;https://www.elastic.co/docs/explore-analyze/query-filter/languages/querydsl&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0…...

神经网络 隐藏层

神经网络中隐藏层的数量是一个超参数&#xff0c;其选择取决于任务复杂度、数据规模和计算资源。以下是常见的架构类型及其适用场景&#xff1a; 1. 单层隐藏层&#xff08;浅神经网络&#xff09; 结构&#xff1a;输入层 → 1 个隐藏层 → 输出层特点&#xff1a; 仅需调整…...

React Hooks 指南:何时使用 useEffect ?

在 React 的函数组件中&#xff0c;useEffect Hook 是一个强大且不可或缺的工具。它允许我们处理副作用 (side effects)——那些在组件渲染之外发生的操作。但是&#xff0c;什么时候才是使用 useEffect 的正确时机呢&#xff1f;让我们深入探讨一下&#xff01; 什么是副作用…...

API标准的本质与演进:从 REST 架构到 AI 服务集成

在当今数字化浪潮中&#xff0c;API 已成为系统之间沟通与协作的“语言”&#xff0c;REST&#xff08;Representational State Transfer&#xff0c;表述性状态转移&#xff09;是一种基于 HTTP 协议的 Web 架构风格。它不仅改变了 Web 应用开发的方式&#xff0c;也成为构建现…...

C++核心编程_继承同名成员处理方式

问题&#xff1a;当子类与父类出现同名的成员&#xff0c;如何通过子类对象&#xff0c;访问到子类或父类中同名的数据呢&#xff1f; 访问子类同名成员 直接访问即可 访问父类同名成员 需要加作用域 class Base { public:Base(){m_A 100;}void func(){cout << "B…...

PHP文件读取漏洞全面剖析:触发点与利用技术

PHP文件读取漏洞全面剖析&#xff1a;触发点与利用技术 引言 PHP作为Web开发中最流行的语言之一&#xff0c;其文件操作功能强大但也暗藏风险。文件读取漏洞是PHP应用中最常见的安全问题之一&#xff0c;攻击者利用这些漏洞可以读取服务器敏感文件&#xff0c;甚至实现远程代…...

解决SQL Server SQL语句性能问题(9)——SQL语句改写(2)

9.4.3. update语句改写 与Oracle类似,SQL Server中,update语句被用户相关技术人员广泛应用于现实日常工作中。但是,有些情况下,尤其是海量数据场景中,update语句也许会带来性能方面的严重问题或极大隐患。因此,为了解决和消除update语句导致的性能问题或隐患,我们将需对…...

学习英语。

1. 先自己翻译一遍&#xff08;葫芦背书法&#xff09; 结构 补充修饰 最核心的记忆 然后再修饰 2.意群之间翻译&#xff1a; 1.意群 对于两个意群合起来翻译 方法1就是着重某一 6.或者意群之间 核心词一个介词 于 对于 介词化修饰 3.句子之间关系 主句1 after句子2 那么句…...

2480: 2020年06月2级T1:计算矩阵边缘元素之和

题目描述 2020年06月2级第一题题目&#xff1a;计算矩阵边缘元素之和 输入一个整数矩阵&#xff0c;计算位于矩阵边缘的元素之和。所谓矩阵边缘的元素&#xff0c;就是第一行和最后一行的元素以及第一列和最后一列的元素。 输入 第一行分别为矩阵的行数m和列数n&#xff0…...

html - <mark>标签

<mark> 标签在HTML中用于高亮显示文本&#xff0c;通常用于突出显示某些重要的部分。它的默认样式通常是背景色为黄色&#xff0c;但你可以通过CSS自定义其外观。 1. 基本用法 <mark> 标签用于标记文本的高亮显示。它常用于搜索结果中&#xff0c;突出显示匹配的…...

JavaWeb:前端工程化-Vue

Vue工程化 介绍 什么是Vue? 小白眼里前端开发 前端工程化 环境准备 D:\Program Files\nodejs Vue项目-快速入门 步骤 D:\front\vue 安装依赖 目录结构 code . vscode打开 启动 VScode侧边栏左下角&#xff0c;没有NPM脚本&#xff0c;如何打开&#xff1f;&…...

AT_abc409_e [ABC409E] Pair Annihilation

AT_abc409_e [ABC409E] Pair Annihilation 赛时没开longlong挂了。 思路 首先我们可以把这棵树转化为一颗有根树&#xff0c;且所有电子的都朝根节点移动。 那么接下来我们就需要选择一个最优的树根。 考虑换根dp。 但是可以发现换根时答案其实是没有变化的。 我们设 f…...

【CSS-6】深入理解CSS复合选择器:提升样式表的精确性与效率

CSS选择器是前端开发的基石&#xff0c;而复合选择器则是其中最强大且实用的工具之一。本文将全面解析CSS复合选择器的类型、用法、优先级规则以及最佳实践&#xff0c;帮助你编写更高效、更精确的样式表。 1. 什么是复合选择器&#xff1f; 复合选择器是通过组合多个简单选择…...

网站静态文件加速-Django项目静态文件存储到腾讯云COS存储提升网络请求速度

解决办法是通过在 Nginx 中把对 /static/ 路径的请求直接指向你的 COS 域名来实现让浏览器直接去拉取 COS 上的静态资源&#xff0c;而不再经过本地服务器。下面给出两种常见的做法&#xff0c;你可以任选其一&#xff1a; 方法一&#xff1a;使用 301/302 Redirect &#xff0…...

开疆智能Ethernet/IP转Modbus网关连接西门子BW500积算仪配置案例

本案例是通过Ethernet转Modbus网关将皮带秤数据接入到罗克韦尔1769L32E型PLC中。 首先进行ABB PLC的设置 1&#xff0c; 运行 RSLogix 5000 程序加载Ethernet转Modbus网关的EDS 文件&#xff1a; 2&#xff0c;新建工程并添加PLC 3&#xff0c;New Module添加网关&#xff…...

【五子棋在线对战】三.数据管理模块实现

数据管理模块实现 1.数据库表的设计2.数据管理模块的封装和实现2.1 user_table() && ~user_table()2.2 insert() 注册时新增用户2.3 login() 登录验证&#xff0c;并返回详细的用户信息2.4 通过用户名获取用户信息 && 通过用户id获取用户信息2.5 win() &&a…...

【JMeter】后置处理器 - 提取器

文章目录 概览边界提取器正则提取器JSON提取器 概览 CSS/JQuery提取器&#xff1b;给网页使用JSON提取器&#xff1a;给JSON数据使用★边界提取器&#xff1a;给字符串使用★正则表达式提取器&#xff1a;更加高级的字符使用★Xpath提取器&#xff1a;给网页使用 边界提取器…...

JSON解析崩溃原因及解决方案

问题记录&#xff1a; /************************************************| * 描述: 将ID124执行NFC操作-JSON解析为结构体* 函数名: cJSON_ID124_to_struct* 参数[ I]: *json_string 待解析的指针* 参数[II]: *wireless_rxd 结构体指针* 返回: 成功返回0 失…...

OpenAI技术路线急转:从TypeScript到Rust的Codex CLI重构内幕

目录 前言&#xff1a;OpenAI的技术抉择引发业界思考 Codex CLI&#xff1a;OpenAI的终端AI编程利器 语言抉择的戏剧性反转&#xff1a;从TypeScript到Rust Rust重写的四大技术动因 1. 零依赖部署&#xff1a;消除环境配置痛点 2. 内存安全与沙箱隔离 3. 性能的全面碾压 …...

window下配置ssh免密登录服务器

window下配置ssh免密登录服务器 本地windows远程登录我的ssh服务器10.10.101.xx服务器&#xff0c;想要每次都免密登录这个服务器. 记录下教程&#xff0c;防止后期忘记&#xff0c;指导我实现这个过程。 教程 二、实践步骤&#xff1a;Windows 上配置 SSH 免密登录 2.1 确…...

nginx部署

配置阿里云yum源 安装如下编译工具 yum install -y gcc gcc-c autoconf automake make #安装使用nginx还得安装nginx所需的一些第三方系统库的支持&#xff0c;比如nginx的静态资源压缩功能所需的gzip lib库&#xff0c;nginx需要支持URL重写&#xff0c;所需的pcre库&…...

c语言超详细知识点总结 1500行手写源码 持续更新中ing 从25年5月到6月5日

想象一下&#xff0c;我们身处的数字世界&#xff0c;如同一座座宏伟的建筑。操作系统、编译器、数据库、嵌入式设备乃至绚丽的游戏引擎&#xff0c;它们都是这座大厦的重要组成部分。而C语言&#xff0c;正是构建这一切的坚固基石。自丹尼斯里奇于贝尔实验室孕育出这颗编程界的…...

线性规划饮食问题求解:FastAPI作为服务端+libhv作为客户端实现

之前在 Pyomo介绍-CSDN博客 中介绍过通过Pyomo求解线性规划问题&#xff0c;这里使用FastAPI作为服务端&#xff0c;开源网络库libhv作为客户端&#xff0c;求解饮食成本最小化问题。 服务端测试代码test_fastapi_pyomo_server.py如下&#xff1a; from fastapi import FastAP…...