RDB 和 AOF 持久化各有利弊,RDB 可能会导致一定时间内的数据丢失,而 AOF 由于文件较大则会影响 Redis 的启动速度,为了能同时使用 RDB 和 AOF 各种的优点,Redis 4.0 之后新增了混合持久化的方式
前言
Redis提供两种持久化机制RDB(Redis Database Backup)和 AOF(Append-Only File)机制:
RDB(默认的) 持久机制是对Redis中的数据执周期性的持久化 (适合备份和恢复大量数据)
AOF 持久机制是对Redis中的所有执行的命令记录持久化(适合持续更新和变化的数据)
在实际开发中:
如果数据量较小,写入频率低,对数据一致性不要求,建议使用RDB方式
如果数据量较大,写入频率高,对数据一致性要求较高,建议使用AOF方式
RDB
RDB是将Redis的内存中的数据定期保存到磁盘上,以防止数据在Redis进程异常退出或服务器断电等情况下丢失
RDB 分为手动触发和自动触发save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
手动触发:使Redis处于阻塞状态,直到RDB持久化完成,生产环境慎用
1、save命令:使Redis处于阻塞状态,直到RDB持久化完成,生产慎用
2、bgsave命令:fork出一个子进程执行持久化,主进程只在fork过程中有短暂的阻塞,子进程创建之后,主进程就可以响应客户端请求了 (如果数据集比较大的话,可能会导致服务暂停几百毫秒,甚至1秒钟,会占用CPU资源)
自动触发:
1、主从同步:全量同步会自动触发bgsave命令,生成RDB发送给从节点
2、save m n :在m秒内,如果有n个键发生改变,就自动触发持久化,通过bgsave执行
save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存
save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存
save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
RDB的优点是:快照文件小、恢复速度快,适合做备份和灾难恢复
RDB的缺点是:定期更新可能会丢数据
AOF
AOF是将Redis的所有写操作追加到AOF文件的末尾,从而记录了Redis服务器运行期间所有修改操作的详细记录。当Redis重新启动时,可以通过执行AOF文件中保存的写操作来恢复数据
配置:
# AOF默认是关闭的需要手动开启
appendonly yes
# AOF文件名称
appendfilename "appendonly.aof"
# 回写策略
appendfsync always
# 触发重写的条件 (这两个条件同时满足才会触发重写)
# 当现有aof文件比上次大100%则触发重写
auto-aof-rewrite-percentage 100
# 当现有文件大于64兆的时候就触发重写
auto-aof-rewrite-min-size 64mb
注意: 重启redis不要使用kill进程的方法,这样会导致redis当前数据无法写入AOF或RDB
使用客户端的命令:shutdown来安全关闭redis
AOF回写策略:
appendfsync always: 每个写命令执行完成,会立马将命令刷新到磁盘中
appendfsync everysec: 每秒同步,异步操作,如果一秒内宕机,有可能会造成数据丢失
appendfsync no: 每个写命令执行完成,由操作系统控制决定何时刷到磁盘
AOF的优点是:可以实现更高的数据可靠性、支持更细粒度的数据恢复,适合做数据存档和数据备份
AOF的缺点是:文件大占用空间更多,每次写操作都需要写磁盘导致负载较高
混合持久化
Redis4.0以后推出了 RDB-AOF 混合持久化,它结合了RDB和AOF持久化的优点,开头为RDB的格式,使得Redis可以快速启动,同时结合 AOF的优点,可以有效的降低数据丢失的风险(Redis5.0默认值为 yes)
混合持久化的数据存储结构如下图所示:
配置:
# 查询是否开启了混合持久化
config get aof-use-rdb-preamble
# 开启
config set aof-use-rdb-preamble yes
# 通过修改 Redis 配置文件开启
aof-use-rdb-preamble yes
注意:如果开启混合持久化,那么此混合持久化 AOF 文件,是不能用在旧版本中的,不向下兼容的
混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,又降低了大量数据丢失的风险
当前共有 0 条评论