RDB与AOF机制
本课程将深入讲解持久化的核心概念和实践应用。主要内容包括:RDB快照、AOF日志、混合持久化、备份恢复。
Redis的持久化是非常重要的功能模块,在实际开发中有广泛的应用。通过本课程的学习,你将全面掌握持久化的使用技巧。
RDB(Redis Database)是Redis的一种持久化方式,它通过创建数据库的快照来实现持久化。RDB文件是一个压缩的二进制文件,包含了Redis在某个时间点的所有数据。
# redis.conf中的RDB配置
save 900 1 # 900秒内至少有1个key变化时保存
save 300 10 # 300秒内至少有10个key变化时保存
save 60 10000 # 60秒内至少有10000个key变化时保存
# RDB文件名称
dbfilename dump.rdb
# RDB文件存储路径
dir /var/lib/redis
# 压缩RDB文件
rdbcompression yes
# 校验RDB文件
rdbchecksum yes
# 手动触发RDB快照(阻塞式)
SAVE
# 返回: OK
# 后台触发RDB快照(非阻塞)
BGSAVE
# 返回: Background saving started
# 查看最后一次保存时间
LASTSAVE
# 返回: (integer) 1675234567
# 实际应用:定期备份
# 在crontab中添加
0 0 * * * redis-cli BGSAVE
AOF(Append Only File)是Redis的另一种持久化方式,它通过记录所有写操作命令来实现持久化。当Redis重启时,会重新执行AOF文件中的命令来恢复数据。
# 开启AOF
appendonly yes
# AOF文件名称
appendfilename "appendonly.aof"
# AOF同步策略
# appendfsync always # 每次写操作都同步(最安全,性能最差)
appendfsync everysec # 每秒同步一次(推荐)
# appendfsync no # 由操作系统决定(性能最好,最不安全)
# AOF重写配置
auto-aof-rewrite-percentage 100 # 文件大小增长100%时重写
auto-aof-rewrite-min-size 64mb # 最小重写大小
# AOF重写期间是否继续同步
no-appendfsync-on-rewrite no
# 手动触发AOF重写
BGREWRITEAOF
# 返回: Background append only file rewriting started
# 查看AOF信息
INFO persistence
# 查看aof_*相关字段
# 实际应用:监控AOF文件大小
watch -n 60 "ls -lh /var/lib/redis/appendonly.aof"
Redis 4.0+支持混合持久化,它结合了RDB和AOF的优点。混合持久化时,AOF文件的开头是一个RDB格式的快照,然后是增量的AOF命令。
# 开启混合持久化
# Redis 4.0+
aof-use-rdb-preamble yes
# 查看是否开启
CONFIG GET aof-use-rdb-preamble
# 返回: 1) "aof-use-rdb-preamble"
# 2) "yes"
# 1. 定期执行BGSAVE
0 0 * * * redis-cli BGSAVE
# 2. 复制RDB文件到备份目录
0 1 * * * cp /var/lib/redis/dump.rdb /backup/redis/$(date +\%Y\%m\%d).rdb
# 3. 结合AOF实现实时备份
appendonly yes
appendfsync everysec
# 4. 使用Redis Sentinel或Cluster实现高可用
# 1. RDB恢复
# 停止Redis
# 复制备份的dump.rdb到Redis数据目录
# 启动Redis
# 2. AOF恢复
# 停止Redis
# 确保appendonly yes
# 复制备份的appendonly.aof到Redis数据目录
# 启动Redis
# 3. AOF文件修复
redis-check-aof --fix /var/lib/redis/appendonly.aof
# 4. RDB文件检查
redis-check-rdb /var/lib/redis/dump.rdb
| 命令 | 功能说明 | 使用场景 |
|---|---|---|
| SAVE | 同步创建RDB快照 | 手动备份(阻塞) |
| BGSAVE | 异步创建RDB快照 | 定期备份(非阻塞) |
| LASTSAVE | 查看最后保存时间 | 监控备份状态 |
| BGREWRITEAOF | 异步重写AOF文件 | 减小AOF文件大小 |
| CONFIG GET | 获取持久化配置 | 查看配置状态 |
| CONFIG SET | 修改持久化配置 | 动态调整配置 |
| INFO persistence | 查看持久化信息 | 监控持久化状态 |
通过本课程的学习,你已经掌握了Redis持久化的核心概念和使用方法:
持久化是Redis的重要功能,它确保了数据的安全性和可靠性。在实际项目中,你需要根据业务需求选择合适的持久化方式,并制定完善的备份策略。继续深入学习和实践,你将能够更好地运用这些知识解决实际问题,构建高可用、高性能的Redis系统。