当前位置:网站首页>你真的了解Redis的持久化机制吗?
你真的了解Redis的持久化机制吗?
2022-07-29 14:56:00 【InfoQ】
Redis持久化

RDB快照
- save 900 1 900秒内有1个键发生改变
- save 300 10 30秒内有10个键发生改变
- save 60 10000 60秒内有10000个键发生改变
写时复制机制(COW)
【文章福利】另外小编还整理了一些C/C++后台开发教学视频,相关面试题,后台学习路线图免费分享,需要的可以自行添加:
Q群:720209036 点击加入~
群文件共享
小编强力推荐C++后台开发免费学习地址:
C/C++Linux服务器开发高级架构师/C++后台开发架构师



优点
- Redis宕机后数据恢复快
- 二进制文件体积小
缺点
- 持久化策略可能会导致在宕机时数据丢失量较多
AOF(append-only file)

- appendonly no 默认情况下是no, 将no改为yes即可开启AOF持久化方式,Redis会将修改的每一条指令先记录到系统缓存,默认每隔一秒钟就把缓存刷新到appendonly.aof磁盘文件中 当 Redis 重新启动时, 程序就可以通过重新执行 AOF 文件中的命令来达到重建数据集的目的。
演示

*2
$6
SELECT
$1
0
*3
$3
SET
$1
1
$1
2
*3
$3
SET
$4
key1
$4
val1
*3
$3
SET
$4
3124
$3
124
*3
$3
SET
$5
key14
$4
key2AOF持久化策略
- appendfsync always:每次有新命令追加到 AOF 文件时就执行一次 fsync ,非常慢,也非常安全,不建议用,本身Redis就是借助的内存快的优势,要是每次操作都访问磁盘这个优势就没了。
- appendfsync everysec:每秒 fsync 一次,足够快,并且在故障时只会丢失 1 秒钟的数据,AOF默认会走在这个配置。
- appendfsync no:从不 fsync ,将数据交给操作系统来处理。更快,也更不安全的选择,发生宕机时,丢失的数据最多。
AOF重写
- auto‐aof‐rewrite‐min‐size 64mb //aof文件至少要达到64M才会自动重写,文件太小恢复速度本来就 很快
- auto‐aof‐rewrite‐percentage 100 //aof文件自上一次重写后文件大小增长了100%则再次触发重写

- 将 AOF 重写缓冲区中的所有内容写入到新的 AOF 文件中,保证新 AOF 文件保存的数据库状态和服务器当前状态一致。
- 对新的 AOF 文件进行改名,原子的覆盖现有 AOF 文件,完成新旧文件的替换
- 服务低峰期定时重写
- 使用ssd,提升持久化效率
优点
- 数据完整性要高于RDB,默认情况下,最多丢失1秒钟的数据。
缺点
- Redis宕机后数据恢复慢
- 文件体积大
混合持久化(sence redis4.0)
- aof‐use‐rdb‐preamble yes
总结
- RDB文件会保存Redis中所有的键值对数据
- save生成RDB文件会阻塞主进程
- bgsave命令后台生成RDB,不会阻塞主进程
- RDB文件体积小,保存的是二进制数据
- RDB通过配置策略执行,可能会丢失部分数据
- RDB文件在Redis宕机后恢复快
- AOF文件保存的是客户端执行的命令
- AOF文件体积大,恢复慢,但是默认配置下数据比RDB要全很多
- Redis宕机重启后默认是用AOF方式进行恢复
- AOF文件中的命令是以Resp协议格式保存的
- 命令会先保存到缓冲区,再定期同步到AOF文件
- AOF会根据配置策略自动的对AOF文件进行重写,以降低文件体积
- AOF重写时会fork一个子进程去执行,同时会有一个重写缓冲区,用来保存重写时主进程修改的键
- AOF重写时,最后会生成一个新的AOF文件,覆盖原有的文件
- 将重写缓冲区的内容写入到AOF与替换新旧AOF文件时会阻塞主进程
- 混合持久化是RDB与AOF的优势结合所产生的
- 混合持久化本质还是用的AOF文件
- 混合持久化使用的前提是开启AOF持久化
- 混合持久化在重写AOF文件时会将数据直接写成RDB的二进制格式,之后新的命令还是以AOF文件Resp协议格式进行保存
附
fsync
子进程
参考资料

边栏推荐
- Google Earth Engine APP——一键实现底图添加和时序的添加和正反序的结合
- Why does APP use the JSON protocol to interact with the server: serialization related knowledge
- 求连续90日每日的用户留存率 -- 全网唯一
- LeetCode·每日一题·593.有效的正方形·数学
- 图斑自上而下,自左而右顺序编码,按照权属单位代码分组,每组从1开始编码
- 小米法务部:成功打击一处伪造Redmi蓝牙耳机窝点,查扣假冒伪劣产品2032个
- 部门例会上做测试分享,不知道分享什么内容?
- C语言 3:常量和变量,顺序语句,选择语句,循环语句,作用域和生存期
- WOLFLAB一方老师带你解读虚拟云网络《VMware NSX-T卷2》-1
- 【 LeetCode 】 1. The sum of two Numbers
猜你喜欢
![[yolov7 series two] positive and negative sample allocation strategy](/img/8d/5f04d33b957f3ce58243ea807c1fe2.png)
[yolov7 series two] positive and negative sample allocation strategy

ST表(动态规划倍增思路离线维护区间极值问题)

Google Play 政策更新 | 2022 年 7 月

LeetCode·739.每日温度·递减栈

The raised platform system based on JSP&Servlet implementation

CSP:重庆八中宏帆初级中学校新初二编程社C2024liuyanjia暑假一期集训总结(2/6))

软件测试架构师的工作日常

WOLFLAB一方老师为什么要写网络虚拟化《VMware NSX-T卷2》路由架构-2

基于SSM实现在线聊天系统

用Asm生成Class字节码文件
随机推荐
这 6 款在线 PDF 转换工具,得试试
《外太空的莫扎特》
光鲜亮丽的业绩,也掩盖不了科大讯飞的“一身病痛”
兆骑科创赛事活动承办,项目路演,人才引进平台
Based on domestic, link global | schneider electric "industrial SI alliance partners hand in hand" to the industry in the future
广州市应急管理局发布夏季危化品十大安全风险
腾讯云数据库负责人林晓斌借1亿炒股:已爆仓破产
进入中国27年,又一美妆巨头要离场
【 LeetCode 】 217. Duplicate elements
苹果涉险过关,全靠iPhone 13
Altair SimSolid复杂装配体无网格快速结构仿真线上研讨会
极市直播丨严彬-Unicorn:走向目标跟踪的大一统(ECCV2022 Oral)
每日优鲜倒下,下一个是谁?
机器学习的3大“疑难杂症”,因果学习是突破口 | 重庆大学刘礼
深陷盈利困境,“寒冬”中也要二次递表,北森上市迫切
协同多智能体学习的价值分解网络的原理与代码复现
【 LeetCode 】 1. The sum of two Numbers
uni 的下拉式筛选菜单的功能/图片懒加载
Google Play policy update | in July 2022
深度卷积生成对抗网络