千家信息网

redis的持久化

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,为什么要持久化?在不考虑服务器宕机的情况下,是不需要把内存中的数据保存到磁盘,来做持久化的。持久化,就是专门为宕机准备的补救措施。redis有rdb和aof两种持久化机制。一、RDB (Redis D
千家信息网最后更新 2025年11月07日redis的持久化

为什么要持久化?在不考虑服务器宕机的情况下,是不需要把内存中的数据保存到磁盘,来做持久化的。

持久化,就是专门为宕机准备的补救措施。redis有rdb和aof两种持久化机制。

一、RDB (Redis DataBases)

原理:

当前进程fork出一个子进程,子进程循环遍历所有的数据,并将数据保存到RDB文件。

时机

按照配置文件设置的策略,来持久化数据。

配置

save 900 1
save 300 10
save 60 10000

二、AOF (AppendOnly File)

原理:


redis会将收到的,客户端发送过来的每一个写命令,都追加到aof文件的最后。

时机:

每次写命令,都会记录下操作。

配置:

appendonly yes

#默认不需要修改,最低64m开始重排,重排比率是上次的一倍,128m,256m,512m这样。
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

三、RDB和AOF的比较

持久化:

RDB等待写入条件,频率低,如果一次写入的数据较多,有可能带来服务器卡顿。

AOF马上记录每次写命令,频率高,每次写入的数据很少;生成的文件会比RDB生成的大。

AOF记录数据更及时,丢数据的可能更小。

数据恢复:

RDB恢复数据时,直接从RDB文件读取数据,非常快速。

AOF恢复数据时,需要一条一条命令,操作redis服务器,效率较低。


四、AOF的指令重排

aof的指令为什么需要重排:

set aa 1

set aa 2

set aa 3

三条指令,其实只需要保存最后一条就可以了,指令重排的意义就是,将三条变成一条set aa 3。

当前进程fork出一个子进程,由子进程完成指令重排。

需要注意的是,在子进程进行指令重排的过程中,如果出现新的指令,主进程做两件事情:

1.将指令追加到老的aof文件末尾;

2.将指令保存到缓存中。缓存中的数据,在子进程完成指令重排之后,全部追加到新的aof文件尾部。


五、如何选择持久化的方式

经过上面的分析,我们已经知道rdb和aof各自的优势和缺点。可以根据具体的业务场景,选择合适的方式。

当然,同时使用两种方式也是可以的。

数据 指令 进程 文件 命令 方式 服务器 服务 配置 个子 原理 就是 时机 缓存 频率 三条 生成 选择 合适 最低 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 锐捷网络技术支持工程师工资 网络技术竞赛复试题 南通公安网络安全 网络安全法规定时间 有关数据库的设计方案 苏州智慧医疗健康软件开发 最终幻想转移服务器 福建精选上位机软件开发 主要的网络安全措施和技术包括 数据库编程学习桌推荐 激活服务器白名单验证 惠州APP软件开发招聘信息 阿里nosql数据库有哪些 mac任务管理工具服务器 甘肃新一代网络技术服务资费 成都软件开发培训费用多少 一个服务器只能对应一个小程序吗 数据库提高性能怎么做 珠海溢动网络技术有限公司 cam软件开发用什么语言 十堰信必立网络技术开发有限公司 2020网络安全一封信 数据库最新技术前沿发展趋势 我的世界服务器如何获得软妹币 网络安全的重要性初中政治 最牛的软件开发 光遇服务器补偿在哪里领 信息系统开发与软件开发 西藏网络安全周是什么意思 测绘内业数据库系统的设计与研发
0