Redis的RDB持久化和AOF持久化的对比总结

Redis 的RDB和AOF的对比总结

RDB持久化(Redis DataBase)

Redis是内存数据库,一旦服务器进程退出,服务器中的数据库状态也会消失不见。重点在于save和bgsave命令。

RDB文件的创建与载入
  • save命令:阻塞Redis服务器进程,直到知道RDB文件创建为止,在服务器进程阻塞期间,服务器不能处理任何命令请求
  • bsave命令:派生出子线程,由子线程创建RDB文件,父线程继续处理请求

创建RDB文件实际 rdb.c/rdbLoad 函数完成的。

自动间隔性保存

Redis服务器会通过用户配置save选项,每隔一段时间去执行一下bgsave命令;默认的配置文件redis.conf,关于rdb部分的配置如下:

# 自动save(关闭自动save配置)
# 服务器在900秒之内,对数据库至少修改了1次
save 900 1
# 服务器在300秒之内,对数据库至少修改了10次
save 300 10
# 服务器在60秒之内,对数据库至少修改了10000次
save 60 10000

# 设置RDB文件名字
# 设置对应的端口号,在充分引用多核的情况下避免文件冲突覆盖
dbfilename dump-${port}.rdb

# 文件存储路径
# 选择一个比较大的硬盘路径、或者分盘
dir /bigdiskpath

# bgsave时发生错误停止写入(默认是yes)
stop-writes-on-bgsave-error yes

# RDB文件是否采用压缩格式(默认是yes)
rdbcompression yes

# RDB文件是否校验和的检验(默认是yes)
rdbchecksum yes
优缺点
  • 优点:
    • 适合大规模的数据恢复
    • 对数据完整性和一致性要求不高
  • 缺点:
    • 会丢失最后一次修改的数据
    • fork会产生额外消耗
AOF持久化(Append Only File)

与RDB通过键值对来记录数据库状态不同,AOF是通过Redis服务器所执行的写命令来记录数据库状态的。

AOF持久化的实现

AOF持久化功能的实现可以分为命令==追加(append)、文件写入、文件同步(sync)==三个步骤。
aof在redis.conf配置文件的:

# 开启aof,默认是no
appendonly yes

# aof文件命名
appendfilename "appendonly-${port}.aof"

# 设置aof策略 
appendfsync everysec

# aof文件存储路径
dir /bigdiskpath

#yes : 在日志重写时,不进行命令追加操作,而只是将其放在缓冲区里,避免与命令的追加造成DISK IO上的冲突。
#no : 在日志重写时,命令追加操作照常进行
no-appendfsync-on-rewrite yes

#AOF文件增长率,默认为100%
auto-aof-rewrite-percentage

#AOF文件重写需要的尺寸,默认为1MB
auto-aof-rewrite-min-size
AOF重写

随着服务器时间的流逝,文件的体积越来越大,体积过大的AOF文件对redis服务器、甚至整个宿主计算机造成影响。并且AOF文件的体积越大,使用AOF文件进行数据还原所需的时间越多。
为了解决AOF文件体重膨胀的问题,redis提供了AOF文件重写(rewrite)的功能。

  • 触发机制:redis会记录上次重写时AOF的大小,默认配置是当AOF文件大小是上次rewrite后大小的一倍且大于64M;默认配置如下:
    • auto-aof-rewrite-percentage 100
    • auto-aof-rewrite-min-size 64mb
优缺点
  • 优点:
    • 配置灵活,可以选择多种方式进行持久化。
  • 缺点:
    • 相同数据集的数据而言,aof文件要远大于rdb文件,恢复速度慢于rdb。

详细原理
企业级Redis开发运维从入门到实践 (15)— 持久化的作用
企业级Redis开发运维从入门到实践 (16)— RDB
企业级Redis开发运维从入门到实践 (17)— AOF
企业级Redis开发运维从入门到实践 (18)— RDB和AOF的抉择

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值