Redis学习笔记六:持久化

持久化的两种方式:

RDB(Redis DataBase)

在制定的时间内将内存中数据集快照写入磁盘,它恢复时是将快照文件直接读到内存里。
RDB保存的是dump.rdb文件

常用配置
# 备份方案
# save   在seconds时间内有changes次改变则进行备份,默认为:
save 900 1
save 300 10
save 60 10000
# 如果注释掉或者save "" 则表示关闭RDB备份策略

# 当后台保存时出错,则停止写入
stop-writes-on-bgsave-error yes

# 是否LZF的压缩算法备份
rdbcompression yes

# 在储存快照后,让reids使用CRC64算法进行数据校验
rdbchecksum yes

# 文件保存
dbfilename dump.rdb

# 工作目录
dir /data/redis/data

恢复

将备份文件(dump.rdb)移到到redis的工作目录下并启动服务即可

注意

指令save或者bgsave,即刻备份(save阻塞式备份,bgsave后台异步保存)
当执行flushall或者shutdown时,会新备份dump.rdb
dump.rdb有错误时,可用 redus-check-dump --fix dump.rdb 文件

优劣性

优势:适合大规模的数据恢复,对数据完整性和一致性的要求不高
劣势:在备份间隔内down掉,则会丢失最后一次快照后的所有修改;fork的时候,内存的数据被clone了一份,大致2倍的膨胀性需要考虑

AOF(Append Only File)

以日志的形式记录每一个写操作,只许追加不许修改。redis重启时根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

常用配置

# AOF的开关
appendonly no

# 文件名
appendfilename "appendonly.aof"

# 备份策略
# always每一次数据变化的操作都记录并保存到磁盘中
# everysec每秒钟追加,并保存到磁盘中
# NO是保存到文件,但不同步到磁盘中,默认是everysec
# appendfsync always
appendfsync everysec
# appendfsync no

# 重写时是否可以运用appendfsync ,默认是no,保证数据安全性
no-appendfsync-on-rewrite no

# redis会记录上次重写时的aof的大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且文件大于64M时触发,即100和64mb
# 设置重写的基准比例
auto-aof-rewrite-percentage 100
# 设置重写的基准值
auto-aof-rewrite-min-size 64mb

# Redis启动加载aof文件,如果发现末尾命令不完整则自动截掉,成功加载前面正确的数据。
aof-load-truncated yes

恢复

将appendonly.aof文件移到redis的工作目录下并启动服务即可

注意

如果RDB和AOF都开启,启动服务器时优先选择appendonly.aof,此时如果appendonly.aof文件有错误,服务器不能启动,这时可以使用redis-check-aof --fix appendonly.aof 修复后再启动。

优劣

优势:数据完整性更好
劣势:aof文件要比rdb文件大,并且恢复速度要慢;aof运行效率要比rdb慢



详细介绍

你可能感兴趣的:(Redis学习笔记六:持久化)