Reids 6.x——缓存的持久化
缓存的持久化1、持久化机制1.1、配置RDB1.2、配置AOF2、Redis过期key清除策略1、持久化机制Redis的所有数据都保存在内存中如果没有配置持久化功能Redis重启后数据就会全部丢失所以需要开启Redis的持久化功能将数据保存到磁盘上这样当Redis重启后可以从磁盘中恢复数据。Redis提供两种方式进行持久化一种是RDB持久化另一种是AOF持久化。1.RDB持久化RDB持久化是指在指定的时间间隔内定时地将内存中的数据写入磁盘把内存中的数据保存到RDB文件中是默认的持久化方式。Redis快照的过程是首先Redis服务器使用fork函数复制一份当前进程父进程的副本子进程​。然后父进程继续接收并处理客户端发来的命令而子进程将内存中的数据写入硬盘中的RDB临时文件。最后当子进程写入完所有数据后会用RDB临时文件替换旧的RDB文件如图所示。2AOF持久化追加Append Only FileAOF持久化方式会记录Redis客户端对服务器的每一次写操作命令并将这些写操作追加保存到appendonly.aof文件AOF文件中。在Redis服务器重启时会加载并运行AOF文件里的命令以达到恢复数据的目的如图所示。两种持久化是可以同时存在的但是当Redis服务器重启时AOF文件会被优先用于重建数据。可以通过配置的方式禁用Redis服务器的持久化功能让数据的生命周期只存在于Redis服务器的运行时间里这样就可以将Redis服务器视为一个功能加强版的Memcached。Memcached是一个分布式的高速缓存系统也是基于内存的key-value存储系统。通过Redis服务器作为缓存数据库进行查询可以减少访问数据库的次数以提高Web应用的访问速度。1.1、配置RDBRedis的配置文件在Linux下是redis.conf文件在Windows下是redis.windows.conf文件。本小节使用的实验环境是Linux相应的配置文件是redis.conf文件配置效果与Windows下的一致。1RDB文件路径和名称RDB持久化是Redis默认的持久化方式默认情况下Redis会把快照文件存储在当前目录下一个名为dump.rdb的文件内。如果需要修改dump.rdb文件的存储路径和名称可以通过修改配置文件redis.conf内的dbfilename参数和dir参数来实现。# RDB文件名默认为dump.rdbdbfilename dump.rdb# RDB文件和AOF文件存放的目录。默认为当前工作目录dir/usr/local/redis/bin保存配置文件后使用redis-server命令加载redis.conf配置文件并重新启动Redis服务器然后使用CONFIGGET dir命令查看RDB文件的存储路径。127.0.0.1:6379CONFIG GETdir1)dir2)/usr/local/redis/bin2RDB的保存点修改保存点选项可以配置RDB的启用和禁用。可以通过修改配置文件redis.conf实现该功能。设置保存点可以使Redis在每N秒内如果数据发 生了M次改变就保存快照文件。例如下面这个保存点配置表示每60s内如果数据发生了10000次以上的改变Redis就会自动保存快照文件。save6010000保存点可以设置多个设置保存点的格式如下。savesecondschangesRedis可以设置多个保存点例如Redis的配置文件redis.conf就默认设置了3个保存点。save9001# 900s后至少1个key有改变就保存快照文件save30010# 300s后至少10个key有改变就保存快照文件save6010000# 60s后至少10000个key有改变就保存快照文件禁用快照保存。如果想禁用快照保存的功能可以通过注释所有save配置或者在最后一条save配置后添加如下的配置实现。save错误处理后台存储发生错误时禁止写入默认值为yes。默认情况下如果Redis在后台生成快照文件时失败就会停止接收数据目的是让用户能知道数据没有持久化成功。stop-writes-on-bgsave-erroryes数据压缩启动RDB文件压缩会耗费CPU资源默认值为yes。如果想节省CPU资源可以禁用压缩功能但是数据集就会比没压缩的时候要大。rdbcompressionyes数据校验对RDB数据进行校验会耗费CPU资源默认值为yes。rdbchecksumyes手动生成快照文件Redis提供了SAVE命令和BGSAVE命令用于手动生成快照文件。1SAVE。SAVE命令会使用同步的方式生成RDB快照文件将当前Redis实例的所有数据快照Snap Shot以RDB文件的形式保存到硬盘默认情况下会把Redis数据持久化到dump.rdb文件中并且在Redis服务器重启后自动读取dump.rdb文件。SAVE命令在Redis主线程中工作会阻塞其他请求操作在实际的生产环境中应该避免使用。127.0.0.1:6379SAVE OK2BGSAVE。BGSAVE命令使用异步的方式保存当前Redis实例的所有数据快照到RDB文件执行BGSAVE命令后Redis会产生一个子进程并立刻恢复对客户端的服务。127.0.0.1:6379BGSAVE Background saving started(2.41s)Redis配置文件里禁用了快照生成功能不影响SAVE命令和BGSAVE命令的效果。1.2、配置AOF1启用AOF持久化将redis.conf配置文件的配置项appendonly设置为yes启用AOF持久化。appendonlyyes修改redis.conf配置文件后重启Redis服务器Redis执行的每一条命令都会被记录到appendonly.aof文件中。但事实上Redis并不会立即将命令写入硬盘文件中而是将命令写入硬盘缓存。在接下来的可靠性配置中可以配置从硬盘缓存写入硬盘的时间。2AOF文件路径和名称通过修改配置文件redis.conf修改dir、appendfilename对应的配置项来修改AOF文件路径和名称。# 文件存放目录与RDB文件共用。默认为当前工作目录dir/usr/local/redis# 默认文件名为appendonly.aofappendfilenameappendonly.aof3可靠性在redis.conf配置文件中可以通过appendfsync选项指定写入策略有3个选项。always每次收到Redis客户端的写命令就立即强制写入到AOF文件。这是最有保证的持久化方式但也是速度最慢的一般不推荐使用。everysec每秒向AOF文件写入一次Redis客户端的写操作。在性能和持久化方面做了很好的折中是推荐的方式。no由操作系统来决定什么时候写入AOF文件一般为30秒左右一次。这个方式性能最好但是持久化方面没有保证一般不推荐使用。在redis.conf配置文件中配置appendfsync选项的实例如下。# appendfsync alwaysappendfsync everysec# appendfsync no4日志重写随着写操作不断增加AOF文件会越来越大Redis可以在不中断服务的情况下在后台重建AOF文件。日志重写的工作原理如下。Redis调用fork函数产生一个子进程。子进程把新的AOF文件写到一个临时文件里。父进程持续把新的变动写到内存里的缓冲区buffer​同时也会把这些新的变动写到旧的AOF文件里这样即使重写失败也能保证数据的安全。当子进程完成文件的重写后父进程会获得一个信号然后把内存里的缓冲区内容追加到子进程生成的新AOF文件里。我们可以设置日志重写的条件。下面的实例表示当AOF文件的体积大于64 MB并且AOF文件的体积比上一次重写之后的体积大了至少一倍100%的时候Redis将执行日志重写操作。auto-aof-rewrite-percentage100auto-aof-rewrite-min-size 64MBRedis会记住自从上一次重写后AOF文件的大小。要禁用自动的日志重写功能可以把百分比设置为0。auto-aof-rewrite-percentage05数据损坏修复如果因为某些原因例如服务器崩溃AOF文件损坏了导致Redis加载不了可以通过以下方式进行修复。备份AOF文件。使用redis-check-aof命令修复原始的AOF文件。redis-check-aof--fix在Linux下可以使用diff-u命令查看AOF文件和RDB文件的差异。使用修复过的AOF文件重启Redis服务器。6从RDB切换到AOF在Redis 2.2以后的版本中从RDB切换到AOF需要备份一个最新的dump.rdb文件并把备份文件放在一个安全的地方。执行以下命令。$ redis-cli configsetappendonlyyes$ redis-cli configsetsave要确保数据与切换前一致确保数据正确地写到AOF文件里。7备份建议的备份方法如下。创建一个定时任务每小时和每天创建一个快照文件并将快照文件保存在不同的文件夹里。定时任务运行时把太旧的文件删除。例如只保留48h内的按小时创建的快照文件和一到两个月的按天创建的快照文件。每天确保一次把快照文件传输到数据中心外的地方进行保存至少不能保存在Redis服务所在的服务器。2、Redis过期key清除策略Redis对过期key有3种清除策略。被动清除当读/写一个已经过期的key时会触发惰性清除策略直接清除这个过期key。主动清除由于惰性清除策略无法保证冷数据被及时清除因此Redis会定期主动清除一批已过期的key。当前已用内存超过maxmemory限定时触发主动清除策略。这里着重介绍第3种清除策略。在Redis中允许用户设置最大使用内存大小为maxmemory需要配合maxmemory-policy使用​设置为0表示不限制。当Redis内存数据集快到达maxmemory时Redis会实行数据淘汰策略。Redis提供6种数据淘汰策略如表所示。关于maxmemory设置可以通过在redis.conf配置文件中的maxmemory参数设置或者通过命令CONFIG SET动态修改。关于数据淘汰策略的设置可以通过在redis.conf配置文件中的maxmemory-policy参数设置或者通过命令CONFIG SET动态修改。127.0.0.1:6379CONFIG GET maxmemory1)maxmemory2)0127.0.0.1:6379CONFIG SET maxmemory 100MB OK127.0.0.1:6379CONFIG GET maxmemory1)maxmemory2)104857600

相关新闻

Reids 6.x——高级主题

Reids 6.x——高级主题

高级主题1、服务器配置1.1、Redis服务器允许远程主机访问1.2、客户端远程连接Redis服务器1.3、设置密码1.3.1、通过命令设置Redis密码1.3.2、通过修改Redis配置文件设置密码1.4、Redis端口修改1.5、查看配置1.6、修改配置1.7、配置项说明2、Redis事务2.1、Redis事务的常用命令4…

2026/7/12 18:59:32阅读更多 →
黑苹果配置神器Hackintool:3步完成显卡驱动、音频修复和USB映射的终极指南

黑苹果配置神器Hackintool:3步完成显卡驱动、音频修复和USB映射的终极指南

黑苹果配置神器Hackintool:3步完成显卡驱动、音频修复和USB映射的终极指南 【免费下载链接】Hackintool The Swiss army knife of vanilla Hackintoshing 项目地址: https://gitcode.com/gh_mirrors/ha/Hackintool 还在为黑苹果的各种驱动问题头疼吗&#xf…

2026/7/12 18:59:32阅读更多 →
Web安全30天封神计划(渗透就业核心方向)

Web安全30天封神计划(渗透就业核心方向)

📌 三句实话,读懂Web安全含金量第一:Web安全是网安就业的绝对主力赛道。90%企业安全风险都来自Web漏洞,渗透测试、安全服务、漏洞挖掘、SRC接单,全部以Web安全为核心,入门最快、就业最广、变现最快。第二&a…

2026/7/12 18:54:31阅读更多 →
C语言基础分享:别再只会 strcpy 了!C语言这4个“内存搬运工”

C语言基础分享:别再只会 strcpy 了!C语言这4个“内存搬运工”

今天我们来聊聊 C 语言里那几个平时不太起眼,但一用起来就能让你代码起飞(或者翻车)的家伙——内存函数。很多人学 C 语言,字符串函数(strcpy, strcat)背得滚瓜烂熟,但一碰到 memcpy和 memmove就…

2026/7/13 2:50:19阅读更多 →
6大进程调度算法性能对比:FCFS/SJF/RR/HRRN/优先级/多级反馈队列

6大进程调度算法性能对比:FCFS/SJF/RR/HRRN/优先级/多级反馈队列

6大进程调度算法性能对比:FCFS/SJF/RR/HRRN/优先级/多级反馈队列在操作系统的核心机制中,进程调度算法如同交通信号灯,决定着计算资源的分配秩序。当多个进程争夺有限的CPU资源时,不同的调度策略会产生截然不同的系统表现。本文将…

2026/7/13 2:50:19阅读更多 →
define和typedef区分

define和typedef区分

1. 处理时机(Preprocessing vs Compilation)#define(宏):属于预处理阶段。预处理器是一个独立的文本替换工具,它根本不懂 C 语言的语法。它只是机械地把代码里的宏名字替换成指定的文本,替换完就…

2026/7/13 2:50:19阅读更多 →
竞品分析3.0:从功能对比到生态洞察的5个维度升级

竞品分析3.0:从功能对比到生态洞察的5个维度升级

竞品分析3.0:从功能对比到生态洞察的5个维度升级在红海市场中,传统竞品分析正面临失效风险。当80%的产品经理还在对比功能清单时,头部企业早已将分析视角转向技术栈深度、用户情感图谱和生态位博弈。这不是简单的工具升级,而是一场…

2026/7/13 2:50:19阅读更多 →
边缘AI部署概述:为什么要优化、常见硬件平台对比

边缘AI部署概述:为什么要优化、常见硬件平台对比

边缘AI部署概述:为什么要优化、常见硬件平台对比把 AI 模型从训练环境搬到边缘设备上跑,不是导出模型文件那么简单——速度、内存、功耗、精度,每一项都要权衡。这篇先讲清楚边缘AI部署的核心挑战、常见硬件平台对比、以及优化的整体思路&…

2026/7/13 2:50:19阅读更多 →
C++ ODBC编程实战:从环境配置到高性能数据库操作

C++ ODBC编程实战:从环境配置到高性能数据库操作

1. 项目概述:为什么C程序员需要掌握ODBC?在当今这个数据驱动的时代,无论是开发桌面应用、服务器后端,还是嵌入式系统,与数据库打交道几乎是每个C程序员绕不开的课题。你可能听说过ORM框架、NoSQL,但在很多需…

2026/7/13 2:45:19阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/12 0:02:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/13 0:50:34阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/12 0:02:11阅读更多 →
卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

卡梅德生物技术快报|蛋白质分离纯化:肠激酶可溶性原核表达 + 两步层析全参数|标准化蛋白质分离纯化 SOP

研究痛点提出(提出问题)重组肠激酶是融合标签切除核心工具酶,当前原核表达体系存在三大标准化难题,直接阻碍可复现的蛋白质分离纯化流程搭建:Trx、GST、单 SUMO 标签融合产物绝大多数为包涵体,沉淀占比超 9…

2026/7/13 0:04:58阅读更多 →
语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效

语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text …

2026/7/13 0:04:58阅读更多 →
Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改

Palworld存档编辑完全掌握:从零开始实现游戏数据可视化修改 【免费下载链接】palworld-save-tools Tools for converting Palworld .sav files to JSON and back 项目地址: https://gitcode.com/gh_mirrors/pa/palworld-save-tools 你是否曾经想要调整Palwor…

2026/7/13 0:04:58阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/11 16:20:28阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/11 23:15:38阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/12 21:43:43阅读更多 →