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

Redis篇之Redis高可用模式参数调优,提高Redis性能

1. Redis高可用模式核心

Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。

常用的高可用架构包括Redis Sentinel模式和Redis Cluster模式,其中Sentinel模式是为了提供高可用性而专门设计的解决方案。

在Redis Sentinel模式下,Sentinel负责监控Redis实例,自动进行故障转移并通知客户端。为了优化Redis高可用模式,我们需要关注一些关键的参数配置。
下面我们将讨论Redis Sentinel高可用模式的常见调优参数,并提供调优后的配置文件。

2. Redis高可用模式参数调优

2.1. Redis Sentinel模式的主要参数调优

Redis Sentinel的配置文件和Redis主从复制有一些相似之处,但也有其特有的监控和故障转移相关参数。以下是一些常见的调优参数。

(1) Sentinel配置文件 (sentinel.conf)
在Redis Sentinel模式中,每个Sentinel节点有自己的配置文件。这个配置文件控制了Sentinel的行为,包括故障转移、监控策略和通知机制。

# Sentinel监控主Redis节点的地址与端口
sentinel monitor mymaster 127.0.0.1 6379 2# 配置主节点的宕机时间检测
# 当检测到主节点不可用超过10秒时,Sentinel会认为该主节点宕机
sentinel down-after-milliseconds mymaster 10000# Sentinel故障转移的超时设置
# 如果在10秒内没有完成故障转移,则会放弃
sentinel failover-timeout mymaster 180000# 配置主从切换时,从节点被选举为主节点的最大时间
sentinel parallel-syncs mymaster 1# 配置Sentinel监控主节点和从节点的心跳检测间隔
sentinel client-reconfig-script mymaster /path/to/script.sh# 配置Sentinel报警通知脚本
sentinel notification-script mymaster /path/to/alert.sh# 配置最大失败通知次数
sentinel auth-pass mymaster <password>  # 如果启用了Redis的密码保护,Sentinel也需要配置密码# 启动时连接到主Redis实例的配置
# 主要用于初始化Sentinel节点
port 26379# 启用日志记录
logfile "/var/log/redis/sentinel.log"# 配置日志级别
loglevel notice  # 记录通知级别日志

(2) Redis主从复制配置文件 (redis.conf)
在Redis的主节点和从节点的配置文件中,需要启用主从复制功能,并且有些参数也对高可用性有影响。

主节点配置 (redis.conf)

# 启用主节点模式
# 不需要特别设置,只需启动Redis作为主节点
bind 0.0.0.0  # 允许从任意IP连接# 启用持久化,可以选择RDB或AOF方式
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec# 最大客户端连接数,防止连接过多导致主节点崩溃
maxclients 10000# 配置Redis的内存上限,防止内存过载
maxmemory 4gb# 设置内存回收策略
maxmemory-policy volatile-lru

从节点配置 (redis.conf)

# 配置从节点,连接到主节点
slaveof 127.0.0.1 6379# 启用从节点的持久化,推荐开启AOF
appendonly yes
appendfsync everysec# 配置最大连接数,确保负载均衡
maxclients 10000# 配置客户端超时,避免长时间无响应的连接占用资源
timeout 3000  # 3秒超时# 启用内存限制
maxmemory 4gb
maxmemory-policy volatile-lru

(3) Redis高可用优化的核心参数解释

  1. sentinel monitor mymaster:该参数用于指定Sentinel监控的主Redis实例。如果Redis Sentinel检测到主节点不可用,则会自动进行故障转移。

  2. sentinel down-after-milliseconds:设置Sentinel监控主节点时,在主节点不可用多少毫秒后,认为该节点是不可用的。默认是30秒,但可以调低此值以加快故障检测。

  3. sentinel failover-timeout:当主节点发生故障时,Sentinel会等待多长时间来完成故障转移操作。默认是180秒,这个值过长可能导致系统长时间不可用,过短可能会导致频繁的故障转移。

  4. sentinel parallel-syncs:该参数控制故障转移期间有多少个从节点可以同时同步主节点数据。调整此参数可以提高故障转移的效率。

  5. maxclients:限制每个Redis实例的最大客户端连接数,避免Redis因处理过多连接而导致资源耗尽。

  6. maxmemory 和 maxmemory-policy:配置内存限制和内存淘汰策略。高可用的Redis实例应该配置合理的内存上限,避免因内存溢出导致实例崩溃。

  7. appendonly 和 appendfsync:启用AOF(Append-Only File)持久化,确保在发生故障时数据不会丢失。appendfsync参数可以选择每秒同步一次,避免对性能的影响。

2.2. 故障转移和主从切换的优化

(1) 设置合理的故障转移时机
合理的故障转移时机对于高可用性至关重要。为了确保在主节点不可用时尽快切换,可以将down-after-milliseconds设置为较低值(例如10秒),以便快速检测到主节点的故障。

(2) 配置合理的并行同步数
sentinel parallel-syncs决定了故障转移期间多少个从节点可以同时同步主节点数据。可以根据集群规模和从节点性能调整此值。通常建议设置为1到2,避免过多从节点同时进行数据同步时造成性能瓶颈。

(3) 增加Sentinel的数量
为了提高Redis高可用性,建议部署多个Sentinel节点,至少三个Sentinel节点。通过投票机制,Sentinel节点可以判断是否进行故障转移,并避免单点故障。

3. 配置文件示例

下面是一个针对Redis高可用模式(主从复制 + Sentinel)的配置文件示例。
主节点 (redis.conf)

bind 0.0.0.0
port 6379# 持久化设置
save 900 1
save 300 10
save 60 10000
appendonly yes
appendfsync everysec# 最大客户端连接数
maxclients 10000# 内存设置
maxmemory 4gb
maxmemory-policy volatile-lru

从节点 (redis.conf)

bind 0.0.0.0
port 6379# 配置从节点
slaveof 127.0.0.1 6379# 持久化设置
appendonly yes
appendfsync everysec# 最大客户端连接数
maxclients 10000# 内存设置
maxmemory 4gb
maxmemory-policy volatile-lru

Sentinel节点 (sentinel.conf)

port 26379sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 10000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1logfile "/var/log/redis/sentinel.log"
loglevel notice# 如果启用了Redis密码保护,配置认证密码
sentinel auth-pass mymaster <password>

4. 总结

Redis高可用模式的调优需要根据实际的硬件资源、网络状况和业务需求来调整参数。
主要优化方向包括故障转移检测、从节点同步速度、客户端连接数限制、内存使用限制等。合理配置这些参数可以大幅提高Redis集群的高可用性和稳定性。

相关文章:

Redis篇之Redis高可用模式参数调优,提高Redis性能

1. Redis高可用模式核心 Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。 常用的高可用架构包括Redis Sentinel模式和Redis Cluster模式&#xff0c;其中Sentinel模式是为了提供高可用性而专门设计的解决方案。 在Re…...

linux-----进程execl簇函数

execl函数族概述 在Linux中&#xff0c;execl函数族用于在一个进程中加载并执行一个新的程序&#xff0c;它会替换当前进程的地址空间&#xff08;代码段、数据段、堆和栈等&#xff09;。这个函数族包括execl、execlp、execle、execv、execvp和execvpe&#xff0c;它们的主要功…...

Vue + ECharts 实现山东地图展示与交互

这篇文章中&#xff0c;我将逐步介绍如何使用 Vue 和 ECharts 实现一个互动式的地图展示组件&#xff0c;其中支持返回上一层地图、点击查看不同城市的详细信息&#xff0c;以及根据数据动态展示不同的统计信息。 效果图&#xff1a;玩转山东地图&#xff1a;用Echarts打造交互…...

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…...

问题小记-达梦数据库报错“字符串转换出错”处理

最近遇到一个达梦数据库报错“-6111: 字符串转换出错”的问题&#xff0c;这个问题主要是涉及到一条sql语句的执行&#xff0c;在此分享下这个报错的处理过程。 问题表现为&#xff1a;一样的表结构和数据&#xff0c;执行相同的SQL&#xff0c;在Oracle数据库中执行正常&…...

MyBatis入门的详细应用实例

目录 MyBatis第一章&#xff1a;代理Dao方式的CRUD操作1. 代理Dao方式的增删改查 第二章&#xff1a;MyBatis参数详解1. parameterType2. resultType 第三章&#xff1a;SqlMapConfig.xml配置文件1. 定义properties标签的方式管理数据库的信息2. 类型别名定义 MyBatis 第一章&…...

Sequelize ORM sql 语句工具

Sequelize ORM sql 语句工具 初始化配置 Sequelize orm 配置文章落日沉溺于海 在命令行中全局安装 npm i -g sequelize-clisequelize 执行需要匹配 mysql2 对应的依赖&#xff08;安装 mysql2&#xff09; npm i sequelize mysql2初始化项目 sequelize init熟悉初始化项目后…...

增强LabVIEW与PLC通信稳定性

在工业自动化系统中&#xff0c;上位机与PLC之间的通信稳定性至关重要&#xff0c;尤其是在数据采集和控制任务的实时性要求较高的场景中。LabVIEW作为常用的上位机开发平台&#xff0c;通过合理优化通信协议、硬件接口、数据传输方式以及系统容错机制&#xff0c;可以大大提升…...

UDP系统控制器_音量控制、电脑关机、文件打开、PPT演示、任务栏自动隐藏

UDP系统控制器(ShuiYX) 帮助文档 概述 本程序设计用于通过UDP协议接收指令来远程控制计算机的音量、执行特定命令和其他功能。为了确保程序正常工作&#xff0c;请确认防火墙和网络设置允许UDP通信&#xff0c;并且程序启动后会最小化到托盘图标。 命令格式及说明 音量控制…...

NK细胞杀伐功能如何实现?

在人体的免疫系统中&#xff0c;自然杀伐细胞&#xff08;Natural Killer Cells&#xff0c;简称NK细胞&#xff09;是一类完全自然的免疫激活力量。它们为人体提供了快速反应能力&#xff0c;不依赖类元的特定识别力&#xff0c;但能直接寻找和毁灭毒病感染细胞和肿瘤细胞。那…...

Ubuntu搭建ES8集群+加密通讯+https访问

目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...

PC寄存器(Program Counter Register)jvm

在JVM(Java虚拟机)中,PC寄存器(Program Counter Register)扮演着至关重要的角色。以下是对JVM中PC寄存器的详细解释: 一、定义与功能 定义: JVM中的PC寄存器,也被称为程序计数器,是对物理PC寄存器的一种抽象模拟。它用于存储当前线程所执行的字节码指令的地址,即指…...

预览和下载 (pc和微信小程序)

1.微信小程序 预览pdf 或者 图片等 //utils.js 文件//通过接口返回文件链接 打开文档 export default function previewFile({ downLinkUrl, tempFilePath }) {let url "https://" downLinkUrl.replace("http://", "").replace("https:…...

使用 DeepSpeed 微调 OPT 基础语言模型

文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…...

BSM和BMS什么区别?

BSM BSM&#xff08;Battery System Manager&#xff09;是指用于管理和控制电动车辆的电池系统的设备&#xff0c;其功能包括监测电池状态、控制充放电过程、保护电池安全等。 BMS BMS&#xff08;Battery Management System&#xff09;是指用于监测、控制和保护电池组的设…...

使用Maven打包javaagent.jar

1、简介 javaagent 是 Java1.5 之后引入的新特性&#xff0c;其主要作用是在class被加载之前对其拦截&#xff0c;以插入我们的字节码。 java1.5 之前使用的是JVMTI&#xff08;jvm tool interface&#xff09;技术来实现对class的拦截&#xff0c;不过这个是用 C 编写的&#…...

R语言混合模型回归GBTM群组轨迹模型绘图可视化研究

全文链接&#xff1a;https://tecdat.cn/?p38581 在回归分析的广袤领域中&#xff0c;面对具有多条未知函数线的复杂数据时&#xff0c;传统方法常常捉襟见肘。混合模型作为一种强有力的分析手段应运而生&#xff0c;其在处理此类复杂情境时展现出独特的优势与潜力&#xff08…...

【毕业设计】A079-基于Java的影院订票系统的设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看项目链接获取⬇️&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600个选题ex…...

Vue.js前端框架教程11:Vue监听器watch和watchEffect

文章目录 监听器&#xff08;watchers&#xff09;基本用法deep: trueimmediate: true总结 watchEffect基本用法自动追踪依赖停止监听与 watch 的对比性能优化总结 监听器&#xff08;watchers&#xff09; 在 Vue 中&#xff0c;监听器&#xff08;watchers&#xff09;是一种…...

疾风大模型气象系统:精准预报,引领未来

精准预报,引领未来 在当今快速变化的世界中,天气预报已成为日常生活和社会运行中不可或缺的一部分。从规划日常出行到防范极端天气影响,高精准的气象服务正在重新定义我们的生活方式。而在这一领域,疾风大模型气象系统以其卓越的技术实力和领先的预测能力,正引领气象服务…...

U9应收单拉单生成时找不到退货单

财务说做应收单时抓不到一张退货单。2022年单据。这样的单据让人联想翩翩&#xff0c;胡思乱想。怎么复杂怎么想&#xff0c;钻了牛角尖。分析了1天也没有结果。不知道系统的逻辑&#xff0c;只能用猜想的形式去分析。 问过顾问之后&#xff0c;原来是单据类型错了。从而知道了…...

设计模式--单例模式【创建型模式】

设计模式的分类 我们都知道有 23 种设计模式&#xff0c;这 23 种设计模式可分为如下三类&#xff1a; 创建型模式&#xff08;5 种&#xff09;&#xff1a;单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。结构型模式&#xff08;7 种&#xff09;&#xff1…...

挑战一个月基本掌握C++(第七天)了解指针,引用,时间,输入输出,结构体,vector容器,数据结构 - 通用完结

一 指针 每一个变量都有一个内存位置&#xff0c;每一个内存位置都定义了可使用连字号&#xff08;&&#xff09;运算符访问的地址&#xff0c;它表示了在内存中的一个地址。 下面的实例&#xff0c;它将输出定义的变量地址&#xff1a; #include <iostream>using…...

百度面试手撕 go context channel部分学习

题目 手撕 对无序的切片查询指定数 使用context进行子协程的销毁 并且进行超时处理。 全局变量定义 var (startLoc int64(0) // --- 未处理切片数据起始位置endLoc int64(0) // --- 切片数据右边界 避免越界offset int64(0) // --- 根据切片和协程数量 在主线程 动态设…...

Spring事务管理详解

一、什么是事务管理 事务是一个最小的不可再分的工作单元。 一个事务对应一套完整的业务操作。事务管理是指这些操作要么全部成功执行&#xff0c;要么全部回滚&#xff0c;从而保证数据的一致性和完整性。比如银行转账&#xff0c;需要保证转出和转入是一个原子操作。Spring提…...

社区版 IDEA 开发webapp 配置tomcat

1.安装tomcat 参考Tomcat配置_tomcat怎么配置成功-CSDN博客 2.构建webapp项目结构 新建一个普通项目 然后添加webapp的目录结构&#xff1a; main目录下新建 webapp 文件夹 webapp文件夹下新建WEB_INF文件夹 *WEB_INF目录下新建web.xml wenapp文件夹下再新建index.html …...

打 印 菱 形

本题要求你写个程序打印成菱形的形状。例如给定17个符号&#xff0c;要求按下列格式打印 **** *********所谓“菱形形状”&#xff0c;是指每行输出奇数个符号&#xff1b;各行符号中心对齐&#xff1b;相邻两行符号数差2&#xff1b;符号数从1开始先从小到大顺序递增&#xff…...

ffmpeg翻页转场动效的安装及使用

文章目录 前言一、背景二、选型分析2.1 ffmpeg自带的xfade滤镜2.2 ffmpeg使用GL Transition库2.3 xfade-easing项目 三、安装3.1、安装依赖&#xff08;[参考](https://trac.ffmpeg.org/wiki/CompilationGuide/macOS#InstallingdependencieswithHomebrew)&#xff09;3.2、获取…...

[RocketMQ] 发送重试机制与消费重试机制~

发送重试 RocketMQ 客户端发送消息时&#xff0c;由于网络故障等因素导致消息发送失败&#xff0c;这时客户端SDK会触发重试机制&#xff0c;尝试重新发送以达到调用成功的效果。 触发条件 客户端消息发送请求失败或超时。服务端节点处于重启或下线状态。服务端运行慢造成请…...

基于Redis的网关鉴权方案与性能优化

文章目录 前言一、微服务鉴权1.1 前端权限检查1.2 后端权限检查1.3 优缺点 二、网关鉴权2.1 接口权限存储至Redis2.2 网关鉴权做匹配 总结 前言 在微服务架构中&#xff0c;如何通过网关鉴权结合Redis缓存提升权限控制的效率与性能。首先&#xff0c;文章对比了两种常见的权限…...