RDB持久化
某一时间点上的数据库状态保存到一个RDB文件中。(二进制文件 RDB文件可还原为数据库状态<--->)
RDB文件的创建和载入
1. save save命令阻塞Redis服务器进程,直到RDB文件创建完毕。
2. bgsave bgsave命令派生一个子进程,子进程创建RDB文件,服务器进程()处理命令请求。
RDB文件载入是服务器启动时自动载入执行的。
BGREWRITEAOF
Redis BGREWRITEAOF
命令用于异步执行一个 AOF(AppendOnly File)文件重写操作。重写会创建一个当前AOF文件的体积优化版本。
即使 BGREWRITEAOF
执行失败,也不会有任何数据丢失,因为旧的AOF文件在BGREWRITEAOF
成功之前不会被修改。
AOF 重写由 Redis 自行触发, BGREWRITEAOF
仅仅用于手动触发重写操作。
具体内容:
- 如果一个子Redis是通过磁盘快照创建的,AOF重写将会在RDB终止后才开始保存。这种情况下
BGREWRITEAOF
任然会返回OK状态码。从Redis 2.6起你可以通过INFO命令查看AOF重写执行情况。 - 如果只在执行的AOF重写返回一个错误,AOF重写将会在稍后一点的时间重新调用。
自动间隔性保存
使用bgsave命令,每隔一段时间自动执行,且不会阻塞线程
save 60 10
60s10次
RDB文件结构
R E D I S 五个字符 表示RDB文件压缩保存。
EOF RDB文件载入完毕
字符串小于20字节。原样保存;大于20字节,压缩保存。
总结:
1. RDB文件用于保存和还原Redis服务器所有数据库中的所有键值对数据。
2.服务器命令中会保存所有用save选项设置的保存条件,当任一条件满足时,服务器会自动执行bgsave命令。
3.对于不同类型的键值对,RDB文件会使用不同的方式保存。