
RDB和AOF的持久化配置
发布日期:2021-05-06 23:31:00
浏览次数:25
分类:技术文章
本文共 1641 字,大约阅读时间需要 5 分钟。
文章目录
RDB相关
1.如何配置RDB持久化
在redis.conf文件中:
# 设置检查点save 900 1save 300 10save 60 10000# 配置 dir 指定 rdb 快照文件的位置dir /var/redis/6379# 配置 dbfilename 指定 rdb 快照文件的名称dbfilename dump.rdb
每隔60s,如果有超过1000个key发生了变更,那么就生成一个新的dump.rdb文件,就是当前redis内存中完整的数据快照,这个操作也被称之为snapshotting,快照。
可以手动调用save或者bgsave命令,同步或异步执行rdb快照生成save可以设置多个,就是多个snapshotting检查点,每到一个检查点,就会去check一下,是否有指定的key数量发生了变更,如果有,就生成一个新的dump.rdb文件
2.RDB持久化机制的工作流程
(1)redis根据配置自己尝试去生成rdb快照文件
(2)fork一个子进程出来 (3)子进程尝试将数据dump到临时的rdb快照文件中 (4)完成rdb快照文件的生成之后,就替换之前的旧的快照文件dump.rdb,每次生成一个新的快照,都会覆盖之前的老快照
3.基于RDB的数据恢复
在Redis中保存几条数据后立刻执行 redis-cli SHUTDOWN 停掉Redis进程、重启,刚才插入的数据还在!因为redis-cli SHUTDOWN是一种安全退出模式,退出时会生成完成的RDB快照。
如果用kill -9的方式杀死Redis进程,数据就丢了。因为数据没有进dump.rdb文件,所以就丢了。AOF相关
1.如何配置AOF持久化
在redis.conf文件中:
# 默认关闭AOF,设置为yes可打开,命令会先进入os cache,后fsync进入磁盘appendonly no# 配置fsync策略:always每条执行一次fsync、everysec每秒执行一次fsync、no从不执行# appendfsync alwaysappendfsync everysec# appendfsync no# 配置aof文件名appendfilename "appendonly.aof"# 配置重写合并策略auto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb
2.AOF持久化机制的工作流程
(1)redis fork一个子进程
(2)子进程基于当前内存中的数据,构建日志,开始往一个新的临时的AOF文件中写入日志 (3)redis主进程,接收到client新的写操作之后,在内存中写入日志,同时新的日志也继续写入旧的AOF文件 (4)子进程写完新的日志文件之后,redis主进程将内存中的新日志再次追加到新的AOF文件中 (5)用新的日志文件替换掉旧的日志文件关于重写合并策略:比如上一次rewrite后是128M,不过再写的增长比例超过上次的100%,且大于min-size,才会去触发rewrite
3.破损文件修复
如果redis在append数据到AOF文件时,机器宕机了,可能会导致AOF文件破损
用redis-check-aof --fix命令来修复破损的AOF文件
AOF和RDB同时工作
(1)如果RDB在执行snapshotting操作,那么redis不会执行AOF rewrite; 如果redis再执行AOF rewrite,那么就不会执行RDB snapshotting
(2)如果RDB在执行snapshotting,此时用户执行BGREWRITEAOF命令,那么等RDB快照生成之后,才会去执行AOF rewrite (3)同时有RDB snapshot文件和AOF日志文件,那么redis重启的时候,会优先使用AOF进行数据恢复,因为其中的日志更完整发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月01日 15时17分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MarkDown
2019-03-04
线性代数 16 向量空间
2019-03-04
nginx 配置实例 - 反向代理(1)
2019-03-04
c++ 函数化 面向对象
2019-03-04
【无需额外安装插件】vscode 同步插件、设置、UI状态 | 超简单方法
2019-03-04
【unity shader 入门精要】CH2 渲染流水线
2019-03-04
【unity shader 入门精要】CH7 基础纹理
2019-03-04
java学习笔记6:windows、linux安装配置jdk
2019-03-04
java学习笔记24:文档注释与代码块
2019-03-04
java学习笔记31:Arrays类介绍使用
2019-03-04
java学习笔记36:Integer的基本方法
2019-03-04
java学习笔记37:Long的基本方法
2019-03-04
java并发学习2:线程的应用
2019-03-04
java并发学习12:问题引入
2019-03-04
java并发学习20:park与unpark
2019-03-04
java并发学习24:固定运行顺序模式
2019-03-04
html5学习9:HTML5文档结构详解
2019-03-04
介绍一个不错的分析客户价值的模型RFM
2019-03-04
SpringMVC---使用
2019-03-04
2.2.4 加减法运算和溢出判断更换
2019-03-04