Redis 保证数据不丢失

Redis 保证数据不丢失(或最大限度减少丢失)的核心是通过 持久化机制 结合 合理的配置策略 实现的。具体方案如下:

一、核心:开启 Redis 持久化(防止进程崩溃丢失数据)

Redis 提供两种持久化方式,可单独使用或结合使用,确保内存中的数据定期写入磁盘。

1. RDB 持久化(快照方式)
  • 原理:在指定时间间隔内,将内存中的数据集 快照(Snapshot) 写入磁盘(生成 .rdb 文件)。
  • 触发方式
    • 自动触发:通过 redis.conf 配置触发条件(如 5 分钟内有 10 次写入):
save 300 10    # 300秒内有10次修改则触发快照
save 60 10000  # 60秒内有10000次修改则触发快照
    • 手动触发:执行 save(阻塞主进程,不推荐)或 bgsave(后台异步执行,推荐)命令。
  • 优点.rdb 文件是压缩的二进制文件,恢复速度快,适合备份。
  • 缺点:可能丢失最后一次快照后的所有数据(如快照间隔内 Redis 崩溃)。

2. AOF 持久化(日志方式)
  • 原理:将每一条写命令(如 sethset)追加到 .aof 日志文件中,Redis 重启时通过重放日志恢复数据。
  • 配置方式:在 redis.conf 中开启:
appendonly yes          # 开启AOF
appendfilename "appendonly.aof"  # AOF文件名
  • 同步策略(控制命令写入磁盘的频率,平衡性能与安全性):
appendfsync always    # 每执行一条命令就同步到磁盘(最安全,性能最差)
appendfsync everysec  # 每秒同步一次(默认,推荐,最多丢失1秒数据)
appendfsync no        # 由操作系统决定何时同步(性能最好,安全性最差)
  • 优点:数据丢失风险低(默认最多丢失 1 秒数据),日志文件可读性强。
  • 缺点.aof 文件体积较大,恢复速度比 RDB 慢。

3. 推荐组合:RDB + AOF
  • 原因:RDB 适合快速备份和恢复,AOF 确保数据丢失量最小。
  • Redis 4.0+ 支持混合持久化:AOF 重写时会将 RDB 快照内容写入 AOF 文件开头,兼顾两者优势:
aof-use-rdb-preamble yes  # 开启混合持久化(默认开启)

二、进阶:防止硬件/磁盘故障(高可用部署)

即使开启持久化,若单机磁盘损坏,数据仍可能丢失。需通过 主从复制 + 哨兵/集群 实现高可用:

1. 主从复制(Master-Slave)
  • 原理:主节点(Master)处理写请求,从节点(Slave)实时复制主节点的数据。
  • 作用:主节点故障时,从节点可作为备用数据来源,避免单点故障。
  • 配置:在从节点的 redis.conf 中指定主节点地址:
replicaof <master-ip> <master-port>  # Redis 5.0+ 用 replicaof,旧版本用 slaveof

2. 哨兵(Sentinel)
  • 作用:监控主从节点状态,主节点故障时自动将从节点升级为主节点(自动故障转移),确保服务持续可用。
  • 配置:通过 sentinel.conf 定义监控的主节点和故障转移规则:
sentinel monitor mymaster <master-ip> <master-port> 2  # 监控名为mymaster的主节点,2个哨兵同意则判定故障
sentinel down-after-milliseconds mymaster 30000  # 30秒未响应则标记为主观下线

3. Redis 集群(Cluster)
  • 适用场景:海量数据 + 高并发,将数据分片存储在多个节点(至少 3 主 3 从)。
  • 数据安全:每个主节点有从节点备份,主节点故障后从节点自动切换,同时结合持久化确保分片数据不丢失。

三、其他关键配置(减少数据丢失风险)

  1. 禁用内存淘汰策略(谨慎)
    若 Redis 内存满了,默认会淘汰旧数据(如 allkeys-lru),可通过配置禁止淘汰(仅在内存充足时使用):
maxmemory-policy noeviction  # 内存满时拒绝写请求,不淘汰数据
  1. 开启 AOF 重写自动触发
    AOF 文件会越来越大,通过重写压缩(保留最终状态的命令):
auto-aof-rewrite-percentage 100  # AOF文件比上次重写后增长100%时触发
auto-aof-rewrite-min-size 64mb   # AOF文件至少64MB才触发重写
  1. 避免误操作
    • 禁用危险命令(如 flushallflushdb):
rename-command FLUSHALL ""
rename-command FLUSHDB ""
    • 开启密码认证:
requirepass your_strong_password

四、总结:数据不丢失的最佳实践

  1. 基础保障:开启 AOF(appendfsync everysec)+ RDB 混合持久化,确保进程崩溃最多丢失 1 秒数据。
  2. 高可用保障:部署主从复制 + 哨兵(或集群),防止单点硬件故障导致数据丢失。
  3. 运维保障:定期备份 .rdb.aof 文件,测试数据恢复流程。

通过以上组合,可将 Redis 数据丢失风险降至最低,满足绝大多数生产环境的可靠性要求。

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

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

相关文章

NUMA/SNC 4种组合下Stream+MLC性能对决:双路服务器BIOS调优全攻略

关于调整 BIOS NUMA 与 SNC 选项的 Stream / MLC 性能测试总结一、测试背景与目的在现代多路 Intel Xeon 服务器上&#xff0c;NUMA&#xff08;Non-Uniform Memory Access&#xff09;与 SNC&#xff08;Sub-NUMA Clustering&#xff09;是两项决定内存访问延迟与带宽的关键 B…

Java-113 深入浅出 MySQL 扩容全攻略:触发条件、迁移方案与性能优化

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; AI炼丹日志-31- 千呼万唤始出来 GPT-5 发布&#xff01;“快的…

Kafka Connect + Streams 用到极致从 CDC 到流处理的一套落地方案

关键目标&#xff1a; 零丢失&#xff1a;端到端 Exactly Once&#xff08;Source 端事务 Streams exactly_once_v2 Sink DLQ&#xff09;。低延迟&#xff1a;Producer 端批量压缩 Streams 缓存 合理 poll/commit 间隔。可恢复&#xff1a;Connect/Streams 的 rebootstrap…

# `std::basic_istream`总结

std::basic_istream总结 文章目录std::basic_istream总结概述常用类型定义全局对象核心成员函数1. 格式化输入2. 非格式化输入3. 流定位4. 其他功能继承的功能来自 std::basic_ios状态检查状态管理来自 std::ios_base格式化标志流打开模式特点说明例子std::basic_istream全面用…

人工智能——课程考核

课程考核包括平时测验&#xff08;75%&#xff09;和讨论&#xff08;25%&#xff09;两个环节&#xff0c;测验采用线上随堂考试&#xff08;2-3次&#xff0c;具体会在本课堂发布&#xff09;重点考核&#xff1a;A*算法、极大极小过程&#xff08;α-β剪枝&#xff09;、不…

机器学习-时序预测1

最近面试过程中&#xff0c;Predict-then-Optimize是运筹优化算法工程师未来的发展方向。就像我之前写过的运筹优化&#xff08;OR&#xff09;-在机器学习&#xff08;ML&#xff09;浪潮中何去何从&#xff1f;-CSDN博客&#xff0c;机器学习适合预测、运筹优化适合决策。我研…

vim-plugin AI插件

文章目录一、vim 插件管理vim-plug二、如何使用和配置 vim-plug第 1 步&#xff1a;安装 vim-plug第 2 步&#xff1a;配置你的 .vimrc / init.vim第 3 步&#xff1a;安装插件常用 vim-plug 命令三、配置vim-aivim-aivim-deepseekvim升级四、配置 AI 插件GitHub Copilot第 1 步…

Adobe Photoshop 2025 最新下载安装教程,附PS2025下载

点击获取&#xff1a;Adobe Photoshop 2025 安装教程&#xff1a; 1、安装包下载后&#xff0c;鼠标右键解压安装包 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2、双击打开解压后的安装包文件夹 3、打开setup文件夹 添加图片注释&#xff0c;不超过…

LeetCode算法日记 - Day 27: 计算右侧小于当前元素的个数、翻转对

目录 1. 计算右侧小于当前元素的个数 1.1 题目解析 1.2 解法 1.3 代码实现 2. 翻转对 2.1 题目解析 2.2 解法 2.3 代码实现 1. 计算右侧小于当前元素的个数 315. 计算右侧小于当前元素的个数 - 力扣&#xff08;LeetCode&#xff09; 给你一个整数数组 nums &#xf…

基于SamOut的音频Token序列生成模型训练指南

通过PyTorch实现从音频特征到语义Token的端到端序列生成&#xff0c;适用于语音合成、游戏音效生成等场景。&#x1f9e0; 模型架构与核心组件 model SamOut(voc_sizevoc_size, # 词汇表大小&#xff08;4098目录名特殊Token&#xff09;hidden_sizehidden_size, …

AWD攻防总结

基本防守策略 1、改用户密码和服务密码 1&#xff09;改linux用户密码&#xff1a; #passwd 如果有权限就删除用户&#xff1a; #userdel -r [用户名] 2&#xff09;改mysql密码&#xff1a; #update mysql.user set passwordpassword(密码) where userroot; 删除匿名用户&…

Android14 基于Configfs的USB动态配置init.usb.configfs.rc

1 Android14 USB子系统启动以及动态切换的init.usb.rc 2 Android14 基于Configfs的USB动态配置init.usb.configfs.rc 3 Android14 高通平台的USB子系统启动和动态配置init.qcom.usb.rc 1. 什么是ConfigFS ConfigFS 是 Linux 内核提供的一种用户空间可配置的伪文件系统在Linu…

2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测

目录1.摘要2.系统模型和问题表述3.矩阵差分进化算法4.结果展示5.参考文献6.算法辅导应用定制读者交流1.摘要 本文提出了一种面向无人机&#xff08;UAV&#xff09;新型轨迹优化方法&#xff0c;以实现对地面移动节点的高效视觉覆盖。与传统方法不同&#xff0c;该方法显式考虑…

Python OpenCV图像处理与深度学习:Python OpenCV图像几何变换入门

图像变换&#xff1a;掌握OpenCV中的几何变换 学习目标 通过本课程&#xff0c;学员们将能够理解图像的几何变换原理&#xff0c;包括缩放、旋转和平移&#xff0c;并能够使用Python和OpenCV库实现这些变换。本课程将通过理论讲解与实践操作相结合的方式&#xff0c;帮助学员们…

Redis Windows 7.0.5 安装教程(附exe/msi下载+环境配置+命令测试)

​第一步&#xff1a;下安装包​ 打开浏览器&#xff08;比如 Edge 或 Chrome&#xff09;&#xff0c;复制这个链接到地址栏敲回车&#xff1a; https://pan.quark.cn/s/31912e0d0443 进去后往下翻&#xff0c;找名字带 ​**redis-7.0.5​ 的文件&#xff0c;​选那个 .exe 结…

数据结构(单链表)

目录 1.链表的概念及结构 2.单链表的应用 2.1 打印链表 2.2申请新节点 2.3插入&#xff08;尾删和头删&#xff09; 2.4删除&#xff08;尾删和头删&#xff09; 2.5查找 2.6任意位置插入 2.7删除指定位置的元素 2.8 销毁链表 3.总结 1.链表的概念及结构 &#xff…

电脑没加域却能获取到IP地址

企业网络管理的核心逻辑&#xff01;电脑没加域却能获取到IP地址&#xff0c;这完全是一种刻意为之的安全设计&#xff0c;而不是网络故障。 简单来说就是&#xff1a;“给你IP&#xff0c;但不给你权限。” 这背后是一套完整的 网络准入控制&#xff08;NAC&#xff09; 策略。…

Go语言入门学习笔记

&#x1f4da; 前言 欢迎学习Go语言&#xff01;这份教材假设您是编程零基础&#xff0c;从最基本的概念开始讲解。Go语言&#xff08;也称为Golang&#xff09;由Google开发&#xff0c;简单、高效、并发能力强&#xff0c;适合后端开发、系统编程和云计算。 学习建议&#xf…

gradle安装、配置环境变量、配置阿里源及idea 中配置gradle

下载gradle https://services.gradle.org/distributions/ 配置系统环境变量 新增GRADLE_HOME D:\Information_Technology\App\gradle-8.14.3-bin\gradle-8.14.3 新增GRADLE_USER_HOME D:\Information_Technology\App\gradleHouse 设置 path&#xff0c;新增一行 %GRADLE_…

C# FlaUI win 自动化框架,介绍

一、简洁介绍 FlaUI 是一套基于 .NET 的 Windows 桌面应用自动化测试库&#xff0c;支持 Win32、WinForms、WPF、UWP 等多种类型的应用。它基于微软原生 UI Automation 库&#xff0c;提供了更现代、易用的 API&#xff0c;适合自动化测试工程师和开发者实现高效、可维护的 UI …