当前位置: 首页 > 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;是一种…...

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

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

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

SpringTask-03.入门案例

一.入门案例 启动类&#xff1a; package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...