RDB:Redis DataBase
AOF:Append Only File
官网参照:Redis Persistence – Redis
一、RDB
1、什么是RDB
RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后(会从磁盘临时文件dump.rdb读取进redis),则会恢复
2.备份与恢复
- 内存备份-->磁盘临时文件
- 临时文件-->恢复到内存
3. RDB优劣势
优势
- 每隔一段时间备份,全量备份
- 灾备简单,可以远程传输
- 子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性
- 相对AOF来说,当有更大文件的时候可以快速重启恢复
劣势
- 发生故障是,有可能会丢失最后一次的备份数据
- 子进程所占用的内存比会和父进程一模一样,如会造成CPU负担
- 由于定时全量备份是重量级操作,所以对于实时备份,就无法处理了。
以上讲完理论,下面实操。找到redis.conf主配置文件
我的在
vim /usr/local/redis/redis.conf
( /SNAP 查找相应RDB配置位置)
RDB的配置
1. 保存位置,可以在redis.conf自定义:
/user/local/redis/working/dump.rdb
2. 保存机制:
- save 900 1
- save 300 10
- save 60 10000
- save 10 3
- 如果1个缓存更新,则15分钟后备份
- 如果10个缓存更新,则5分钟后备份
- 如果10000个缓存更新,则1分钟后备份
- 演示:更新3个缓存,10秒后备份
以下演示10秒3个缓存更新,启动一次RDB备份。
①重启redis使配置文件生效
/etc/init.d/redis_init_script stop
/etc/init.d/redis_init_script start
②查看临时磁盘备份文件dump.rdb最后一次修改时间。(如果触发10秒3个缓存更新,看dump.rdb文件是否修改)
ll --full-time
③登录redis客户端,10秒内进行3次缓存更新
④查看临时磁盘备份文件dump.rdb最后一次修改时间(验证是否修改,结果符合预期)
3.stop-writes-on-bgsave-error
- yes:如果save过程出错,则停止写操作(默认)
- no:如果save过程出错,继续写操作,可能造成数据不一致
4. rdbcompression
- yes:开启rdb压缩模式(默认)
- no:关闭,会节约cpu损耗,但是文件会大,道理同nginx
5. rdbchecksum
是否开启,压缩文件校验,结合上面第4点开启压缩一起使用,会消耗cpu性能,但一般不会在意默认开启就行
(以上redis使用RDB持久化主要配置就完成了,重启redis即可。不想在一个博客写过长内容,AOF请看下篇Redis的持久化机制(RDB和AOF)(2)_p&f°的博客-CSDN博客)