本文档风哥主要介绍Redis RDB和AOF持久化的配置与实战方法,包括持久化概念、RDB原理、AOF原理、持久化对比、持久化规划、持久化策略、性能考虑、RDB配置、AOF配置、混合持久化配置、持久化管理以及数据恢复实战等内容,风哥教程参考Redis官方文档Persistence等内容编写,适合DBA人员和开发人员在生产环境中使用。
Part01-基础概念与理论知识
1.1 持久化概念
Redis持久化是指将内存中的数据持久化到磁盘,以防止数据丢失。Redis支持两种持久化方式:
- RDB(Redis Database):通过快照的方式将数据保存到磁盘
- AOF(Append Only File):通过记录命令的方式将数据保存到磁盘
1.2 RDB原理
RDB持久化原理:
- 快照:Redis创建一个子进程,子进程将内存中的数据写入到临时文件,完成后替换原有的RDB文件
- 触发方式:手动触发(SAVE、BGSAVE命令)和自动触发(配置文件中的save参数)
- 优点:文件体积小,恢复速度快
- 缺点:可能会丢失最后一次快照后的的数据
1.3 AOF原理
AOF持久化原理:
- 命令记录:将所有写命令追加到AOF文件中
- 同步策略:always(每次命令都同步)、everysec(每秒同步)、no(由操作系统决定)
- 重写:通过AOF重写机制,压缩AOF文件大小
- 优点:数据安全性高,丢失数据少
- 缺点:文件体积大,恢复速度慢
1.4 持久化对比
## 1. RDB优点
– 文件体积小
– 恢复速度快
– 适合备份和灾难恢复
## 2. RDB缺点
– 可能丢失最后一次快照后的的数据
– 快照过程可能会影响性能
## 3. AOF优点
– 数据安全性高
– 丢失数据少
– 支持重写机制
## 4. AOF缺点
– 文件体积大
– 恢复速度慢
– 重写过程可能会影响性能
## 5. 混合持久化
– 结合RDB和AOF的优点
– 恢复速度快,数据安全性高
更多视频教程www.fgedu.net.cn
Part02-生产环境规划与建议
2.1 持久化规划
生产环境持久化规划:
- 数据安全性:根据业务对数据安全的要求选择持久化方式
- 性能影响:考虑持久化对Redis性能的影响
- 存储空间:考虑持久化文件的存储空间
- 恢复速度:考虑数据恢复的速度
2.2 持久化策略
- 高安全性场景:启用AOF,使用everysec同步策略
- 高性能场景:只启用RDB,适当调整快照频率
- 平衡场景:同时启用RDB和AOF,使用混合持久化
- 备份场景:定期执行BGSAVE命令,备份RDB文件
2.3 性能考虑
## 1. RDB性能影响
– 快照过程会fork子进程,消耗内存
– 大内存实例快照时间长
– 建议在低峰期执行快照
## 2. AOF性能影响
– 同步策略越严格,性能影响越大
– 重写过程会消耗CPU和内存
– 建议使用everysec同步策略
## 3. 优化建议
– 合理设置RDB快照频率
– 选择合适的AOF同步策略
– 启用AOF重写机制
– 监控持久化过程
学习交流加群风哥QQ113257174
Part03-生产环境项目实施方案
3.1 RDB配置
# 编辑配置文件
$ vi /redis/app/redis.conf
# RDB文件名
dbfilename dump.rdb
# RDB快照触发条件
# 格式:save
save 900 1 # 900秒内有1个修改
save 300 10 # 300秒内有10个修改
save 60 10000 # 60秒内有10000个修改
# 停止写入如果RDB快照失败
db-sync-disable no
# RDB压缩
dbcompression yes
# RDB校验
dbchecksum yes
# 保存配置
:wq
# 重启Redis
$ systemctl restart redis
# 手动触发RDB快照
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 bgsave
# 输出示例
Background saving started
# 查看RDB文件
$ ls -la /redis/fgdata/dump.rdb
# 输出示例
-rw-r–r– 1 root root 10485760 Apr 7 10:00 /redis/fgdata/dump.rdb
3.2 AOF配置
# 编辑配置文件
$ vi /redis/app/redis.conf
# 启用AOF
appendonly yes
# AOF文件名
appendfilename “appendonly.aof”
# AOF同步策略
# 可选值:always, everysec, no
appendfsync everysec
# AOF重写时是否停止同步
no-appendfsync-on-rewrite yes
# AOF重写触发条件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# AOF文件损坏时的处理方式
aof-load-truncated yes
# 保存配置
:wq
# 重启Redis
$ systemctl restart redis
# 手动触发AOF重写
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 bgrewriteaof
# 输出示例
Background append only file rewriting started
# 查看AOF文件
$ ls -la /redis/fgdata/appendonly.aof
# 输出示例
-rw-r–r– 1 root root 10485760 Apr 7 10:00 /redis/fgdata/appendonly.aof
3.3 混合持久化配置
# 编辑配置文件
$ vi /redis/app/redis.conf
# 启用AOF
appendonly yes
# AOF使用RDB预amble
aof-use-rdb-preamble yes
# 保存配置
:wq
# 重启Redis
$ systemctl restart redis
# 查看混合持久化状态
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 config get aof-use-rdb-preamble
# 输出示例
1) “aof-use-rdb-preamble”
2) “yes”
3.4 持久化管理
# 查看持久化状态
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 info persistence
# 输出示例
# Persistence
loading:0
rdb_changes_since_last_save:100
rdb_bgsave_in_progress:0
rdb_last_save_time:1651234567
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:1
rdb_current_bgsave_time_sec:-1
rdb_last_cow_size:1048576
appendonly:1
appendfsync:everysec
appendfsync_in_progress:0
appendfsync_queue_length:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:2
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok
aof_last_cow_size:2097152
aof_current_size:10485760
aof_base_size:5242880
aof_pending_rewrite:0
aof_buffer_length:0
aof_rewrite_buffer_length:0
aof_pending_bio_fsync:0
aof_delayed_fsync:0
# 监控持久化文件大小
$ du -h /redis/fgdata/dump.rdb /redis/fgdata/appendonly.aof
# 输出示例
10M /redis/fgdata/dump.rdb
20M /redis/fgdata/appendonly.aof
风哥提示:Redis接口限流是保护系统的重要机制,合理的限流策略可以防止系统过载,确保系统的稳定性和可用性。在实际应用中,需要根据具体业务场景和数据特点,选择合适的限流算法和策略。
Part04-生产案例与实战讲解
4.1 RDB实战
## 1. 配置RDB
# 编辑配置文件
$ vi /redis/app/redis.conf
dbfilename dump.rdb
save 3600 10
save 600 100
save 300 1000
dbcompression yes
dbchecksum yes
# 重启Redis
$ systemctl restart redis
## 2. 测试RDB
# 写入数据
$ for i in {1..1000}; do
/redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 set key:$i value:$i
done
# 手动触发RDB
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 bgsave
# 查看RDB文件
$ ls -la /redis/fgdata/dump.rdb
## 3. 测试RDB恢复
# 停止Redis
$ systemctl stop redis
# 备份RDB文件
$ cp /redis/fgdata/dump.rdb /redis/backup/dump.rdb.bak
# 删除RDB文件
$ rm /redis/fgdata/dump.rdb
# 启动Redis
$ systemctl start redis
# 检查数据是否存在
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
(nil)
# 停止Redis
$ systemctl stop redis
# 恢复RDB文件
$ cp /redis/backup/dump.rdb.bak /redis/fgdata/dump.rdb
# 启动Redis
$ systemctl start redis
# 检查数据是否恢复
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
“1”
4.2 AOF实战
## 1. 配置AOF
# 编辑配置文件
$ vi /redis/app/redis.conf
appendonly yes
appendfilename “appendonly.aof”
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 重启Redis
$ systemctl restart redis
## 2. 测试AOF
# 写入数据
$ for i in {1..1000}; do
/redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 set key:$i value:$i
done
# 手动触发AOF重写
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 bgrewriteaof
# 查看AOF文件
$ ls -la /redis/fgdata/appendonly.aof
## 3. 测试AOF恢复
# 停止Redis
$ systemctl stop redis
# 备份AOF文件
$ cp /redis/fgdata/appendonly.aof /redis/backup/appendonly.aof.bak
# 删除AOF文件
$ rm /redis/fgdata/appendonly.aof
# 启动Redis
$ systemctl start redis
# 检查数据是否存在
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
(nil)
# 停止Redis
$ systemctl stop redis
# 恢复AOF文件
$ cp /redis/backup/appendonly.aof.bak /redis/fgdata/appendonly.aof
# 启动Redis
$ systemctl start redis
# 检查数据是否恢复
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
“1”
4.3 混合持久化实战
## 1. 配置混合持久化
# 编辑配置文件
$ vi /redis/app/redis.conf
appendonly yes
aof-use-rdb-preamble yes
# 重启Redis
$ systemctl restart redis
## 2. 测试混合持久化
# 写入数据
$ for i in {1..1000}; do
/redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 set key:$i value:$i
done
# 手动触发AOF重写
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 bgrewriteaof
# 查看AOF文件
$ ls -la /redis/fgdata/appendonly.aof
## 3. 测试混合持久化恢复
# 停止Redis
$ systemctl stop redis
# 备份AOF文件
$ cp /redis/fgdata/appendonly.aof /redis/backup/appendonly.aof.bak
# 删除AOF文件
$ rm /redis/fgdata/appendonly.aof
# 启动Redis
$ systemctl start redis
# 检查数据是否存在
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
(nil)
# 停止Redis
$ systemctl stop redis
# 恢复AOF文件
$ cp /redis/backup/appendonly.aof.bak /redis/fgdata/appendonly.aof
# 启动Redis
$ systemctl start redis
# 检查数据是否恢复
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 get key:1
# 输出示例
“1”
4.4 数据恢复实战
## 1. RDB恢复
# 停止Redis
$ systemctl stop redis
# 复制RDB文件到数据目录
$ cp /redis/backup/dump.rdb /redis/fgdata/
# 启动Redis
$ systemctl start redis
# 验证数据
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 keys *
## 2. AOF恢复
# 停止Redis
$ systemctl stop redis
# 复制AOF文件到数据目录
$ cp /redis/backup/appendonly.aof /redis/fgdata/
# 启动Redis
$ systemctl start redis
# 验证数据
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 keys *
## 3. AOF文件修复
# 停止Redis
$ systemctl stop redis
# 使用redis-check-aof修复AOF文件
$ /redis/app/bin/redis-check-aof –fix /redis/fgdata/appendonly.aof
# 启动Redis
$ systemctl start redis
# 验证数据
$ /redis/app/bin/redis-cli -h 192.168.1.100 -p 6379 -a fgedu@2026 keys *
## 4. RDB文件检查
# 使用redis-check-rdb检查RDB文件
$ /redis/app/bin/redis-check-rdb /redis/fgdata/dump.rdb
# 输出示例
[offset 0] Checking RDB file /redis/fgdata/dump.rdb
[offset 26] AUX FIELD redis-ver = ‘7.0.12’
[offset 40] AUX FIELD redis-bits = ’64’
[offset 48] AUX FIELD ctime = ‘1651234567’
[offset 64] AUX FIELD used-mem = ‘10485760’
[offset 80] AUX FIELD aof-preamble = ‘0’
[offset 98] Selecting DB ID 0
[offset 112] Checksum OK
[offset 112]
RDB file is valid
更多学习教程公众号风哥教程itpux_com
Part05-风哥经验总结与分享
5.1 最佳实践
Redis持久化最佳实践:
- 启用混合持久化:结合RDB和AOF的优点,学习交流加群风哥微信: itpux-com
- 合理设置RDB快照频率:根据业务需求调整
- 选择合适的AOF同步策略:推荐使用everysec
- 启用AOF重写:保持AOF文件大小合理
- 定期备份持久化文件:防止文件损坏
- 监控持久化状态:及时发现问题
5.2 常见问题
- AOF文件损坏:使用redis-check-aof修复
- RDB文件损坏:使用redis-check-rdb检查
- 持久化文件过大:启用AOF重写,调整RDB快照频率
- 持久化影响性能:调整同步策略,在低峰期执行快照
- 数据恢复失败:检查持久化文件是否正确
5.3 优化技巧
## 1. 配置检查
– [ ] RDB快照频率设置合理
– [ ] AOF同步策略选择合适
– [ ] AOF重写配置合理
– [ ] 混合持久化启用
## 2. 监控检查
– [ ] 持久化状态正常
– [ ] 持久化文件大小合理
– [ ] 持久化过程无错误
– [ ] 持久化对性能影响可控
## 3. 备份检查
– [ ] 定期备份持久化文件
– [ ] 备份文件存储在安全位置
– [ ] 定期测试恢复过程
## 4. 优化检查
– [ ] RDB压缩启用
– [ ] AOF重写启用
– [ ] 持久化文件定期清理
– [ ] 持久化配置定期review
通过本文档的学习,您应该掌握了Redis RDB和AOF持久化的配置与实战方法,能够在生产环境中合理配置持久化参数,确保数据安全。在实际应用中,需要根据业务需求和硬件环境,灵活调整持久化策略。
风哥提示:持久化是Redis数据安全的重要保障,合理的持久化配置可以确保数据在发生故障时能够快速恢复。
from Redis视频:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
