目录
1、RDB(Redis Database)
RDB持久化就是按一定的时间(如:1h至少有一次redis)或者按操作量(如:60s内修改了10000次redis)的策略将redis中的数据保存至dump.rdb文件中,数据恢复时直接使用dump.rdb文件中的数据
存储策略
可自定义 save <secondes> <changes>
RDB优缺点
优点
- rdb是一个非常小巧时间点单文件,适合用与备份
- rdb时候用于灾难回复
- rdb使用一个子进程进行磁盘io工作
- 与aof相比,rdb启动大数据集更快
- rdb支持重启后的部分同步
缺点
- rdb不支持最小程度的数据修改(如存储策略为30分钟修改200次,而实际30分钟并只修改了100次,则不会触发自动存储,会导致这100次数据丢失)
- rdb另开一个子进程来处理io,也会增加性能消耗,特别是在需要存储的数据很大时
手动保存RDB文件
# 直接使用主进程来进行持久化,在持久化完成前会redis会阻塞
save
# 开启一个子进程来进行持久化 (默认)
bgsave
2、AOF(Append Only File)
AOF持久化就是根据配置的存储策略(如:每秒写回磁盘)将执行过的写指令保存appendonly.aof文件中,数据恢复时,会重新执行一次appendonly.aof文件中的所有指令。
存储策略
- always(每条写指令都写回磁盘)
- everysec(每秒钟写回磁盘)
- no(不写回磁盘)
AOF优缺点
优点
- aof更加持久,拥有三种写策略,将数据丢失减少到最小(如策略为每秒钟写回磁盘,突然断电也只会丢失1秒的数据)
- aof是追加方式写入,在断电时不会有寻道霍损坏问题
- aof文件能够在他变得很大时进行自动重写来减少容量(如 key1 多次设置了值,只保存最后一次设置值的指令即可)
- AOF 以易于理解和解析的格式包含所有操作一个接一个的日志。
缺点
- aof文件通常大于同一数据集的rdb文件
- aof可能比rdb满,具体取决于aof的写回策略
3、配置RDB和AOF Redis配置详解
redis的存储策略在redis.conf文件中进行配置
save " " 表示不开启rdb
save <secondes> <changes> 表示多少秒内改变了多少次redis则执行保存
appendonly yes 开启aof
appendfsync always / everysec / no 配置aof写策略
4、rdb和aof共同使用(推荐)
aof开启后会优先加载aof
aof-use-rdb-preamble yes 开启混合方式
RDB做全量持久化,AOF做增量持久化:
先使用rdb进行快照存储,然后使用aof持久化记录所有写操作,当从写策略满足或手动触发时,将新的数据存储为rdb。这样,从其服务器时,会从RDB和AOF两个部分恢复数据,既保证数据的完整性,又提高了恢复数据的性能