简介
本文介绍Redis的持久化。会介绍AOF和RDB的区别,包括:使用场景,优缺点等。
Redis默认的持久化方式是RDB。
含义与使用场景
项 | RDB(Redis DataBase) | AOF(append only file) |
简介 | 是一个紧凑压缩的二进制文件, 代表Redis在某个时间点上的数据快照。 | 以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。 |
场景 | 适用于备份, 全量复制等场景 | 实时持久化数据。(是目前的主流的持久化方式) |
优缺点
AOF占优势的项
项 | RDB | AOF |
实时持久化 | 不支持。 因为bgsave每次运行都要执行fork操作创建子进程, 属于重量级操作, 频繁执行成本过高。 | 支持。 可以每秒 或 每次操作保存一次。 |
可用性 | 差。 RDB持久化时如果文件过大可能会造成服务器的阻塞,停止客户端请求! | 好。 是增量操作。 |
版本兼容问题 | 兼容性差。 RDB文件使用特定二进制格式保存, Redis版本演进过程中有多个格式的RDB版本, 存在老版本Redis服务无法兼容新版RDB格式的问题。 | 兼容性好。 |
易读性 | 差。 | 好。 AOF 文件有序地保存了对数据库执行的所有写入操作, 这些写入操作以 Redis 协议的格式保存, 因此 AOF 文件的内容非常容易被人读懂, 对文件进行分析(parse)也很轻松。 |
RDB占优势的项
项 | RDB | AOF |
恢复大数据量的速度 | 较快。(因为其文件比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
请先
!