Redis持久化——RDB和AOF

RDB快照模式

RDB:全称Redis Database Backup file,也叫做Redis数据快照。

简单来说就是将内存中的所有数据存到磁盘中。

快照文件称为RDB文件,默认是保存在当前运行目录,默认是dump.rdb。

1. save

由Redis主线程执行RDB,会阻塞所有命令。

2. bgsave

开启一个子线程执行RDB,避免了主线程受到影响。

3. redis.conf

Redis内部是具有RDB的触发机制的,可以通过配置redis.conf来设置

# 900秒内如果至少有一个key被修改,则执行bgsave
save 900 1
save 300 10
save 60 10000
# save "" 表示禁用RDB
save ""
# 是否开启压缩,默认是关
rdbcompression no	

# RDB文件名称
dbfilename dump.rdb

# 文件保存的目录
dir ./

4. 优缺点

优点:

  1. 只有一个dump.rdb文件,方便持久化
  2. 容灾性好,一个文件可以保存到安全的磁盘中。
  3. 数据量大时,比AOF的启动效率更高。

缺点:

RDB是间隔一段时间进行持久化,如果持久化之间redis发生故障,会发生数据丢失。

AOF追加模式

AOF: 全称为Append Only File。 Redis处理的每一个写命令都会记录在AOF文件中,也可看做是命令日志文件。

1. 开启AOF持久化

redis默认配置中AOF持久化机制是不开启的,需要在配置中开启。

# 是否开启AOF功能,默认是NO
appendonly yes

# AOF文件名称
appendfilename "appendonly.aof"

2. 设置日志追加频率

# 每执行一次命令,立即记录到AOF文件中
appendfsync everysec

# 写命令执行完先放入AOF缓冲区,然后表示每隔1s将缓冲区数据写到AOF文件,默认方案
appendfsync always

# 写命令执行完先放缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no

在这里插入图片描述

3. AOF重写

AOF文件是以追加的方式记录接收到的写命令的,而且AOF会记录对同一个key的多次写操作,但只有

最后一次写操作才有意义。

我们可以通过bgrewriteaof命令,让AOF文件执行重写功能。

一定程度上减小AOF文件的体积,解决文件过大的问题。

# 表示AOF写入文件大小大于64m才能触发重写操作。
auto-aof-rewrite-min-size 64mb 

# 100表示百分比,表示AOF文件的体积比上一次重写之后体积至少大了 “100%” 时会自动触发。
auto-aof-rewrite-percentage 100 

4. 优缺点

优点:

  1. 数据安全,AOF持久化可以通过配置appendfsync属性,设置其记录频率。
  2. 通过append模式写文件,即使服务器宕机,也可以通过redis-check-aof工具解决数据一致问题。
  3. 更加灵活。AOF机制的 rewrite 模式,AOF文件没被rewrite之前可以删除其中的某些命令。

缺点:

  1. AOF文件比RDB文件更大,且回复速度更慢。
  2. 数据集大时,AOF比RDB启动效率低。

两者对比

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值