所有分类
  • 所有分类
  • 未分类

Redis持久化-AOF和RDB的区别

简介

本文介绍Redis的持久化。会介绍AOF和RDB的区别,包括:使用场景,优缺点等。

Redis默认的持久化方式是RDB。

含义与使用场景

RDB(Redis DataBase)AOF(append only file)
简介是一个紧凑压缩的二进制文件, 代表Redis在某个时间点上的数据快照。以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。
场景适用于备份, 全量复制等场景实时持久化数据。(是目前的主流的持久化方式

优缺点

AOF占优势的项

RDBAOF
实时持久化不支持。 因为bgsave每次运行都要执行fork操作创建子进程, 属于重量级操作, 频繁执行成本过高。支持。 可以每秒 或 每次操作保存一次。
可用性差。 RDB持久化时如果文件过大可能会造成服务器的阻塞,停止客户端请求!好。 是增量操作。
版本兼容问题兼容性差。 RDB文件使用特定二进制格式保存, Redis版本演进过程中有多个格式的RDB版本, 存在老版本Redis服务无法兼容新版RDB格式的问题。兼容性好。
易读性差。好。 AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松。

RDB占优势的项

RDBAOF
恢复大数据量的速度较快。(因为其文件比AOF小)较慢

持久化方式的配置

RDB和AOF是独立的。可以全部关闭,也可以单独开启、全部开启。

RDB

Redis默认开启RDB持久化方式,将日志持久化到dump.rdb文件。

################################ SNAPSHOTTING #################################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
#
# In the example below the behaviour will be to save:
# after 900 sec (15 min) if at least 1 key changed
# after 300 sec (5 min) if at least 10 keys changed
# after 60 sec if at least 10000 keys changed
save 900 1
save 300 10
save 60 10000

关闭的方法

第1步:删除dump.rdb文件
第2步:修改redis.conf配置(注释原来配置,并添加空配置)

#save 900 1
#save 300 10
#save 60 10000
save ""

AOF

默认是关闭的(appendonly no)。开启方式是:

修改redis.conf配置:

appendonly yes

开启后,会生成持久化文件:appendonly.aof

4

评论2

请先

  1. RDB相当于是全量文件持久化写入,AOF是增量操作,实时持久化,为什么恢复大数据量的速度却比AOF快 :lol:
    love清浅 2024-08-30 1
    • 恢复大数据量是全量的,一个个读AOF的命令,肯定慢。比如:复制一个视频,直接复制比录屏肯定快;但如果只是复制视频中的两秒,那录屏就比复制快。
      自学精灵 2024-09-02 1
显示验证码
没有账号?注册  忘记密码?

社交账号快速登录