第二章:redis RDB持久化
01. RDB持久化和AOF持久化
- 优缺点
RDB: 类似快照,把当前内存里的数据持久化到硬盘
优点:压缩格式,恢复数据速度快
缺点:不是实时复制,可能会造成数据丢失,操作比较重量
AOF:类似于mysql的binlog日志,可以设置成每秒/每次操作都以追加的形式保存在日志文件中
优点:实时复制,比较安全,最多丢失1秒的数据,具备一定的可读性
缺点:文件比较大,恢复数据速度慢
- 使用哪种持久化更好
https://redis.io/topics/persistence
1.开启混合模式
2.开启aof
3.不开启rdb
4.rdb采⽤定时任务的⽅式定时备份
5.可以从库开启RDB进⾏备份
- AOF和RDB读取实验
aof和rdb同时存在,redis重启会读取哪⼀个数据?
当aof和rdb同时存在的时候,redis会优先读取aof的内容
02. RDB 持久化配置
cat >> /opt/redis_6379/conf/redis_6379.conf <<EOF
# 900秒 有1条key改变就会触发rdb保存
save 900 1
save 300 10
save 60 10000
dbfilename redis.rdb
dir /data/redis_6379
EOF
03. 重启redis,并测试
重启:
systemctl restart redis
连接测试:
[root@db01 opt]# redis-cli
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> BGSAVE
Background saving started
[root@db01 opt]# ll /data/redis_6379/
-rw-r--r-- 1 redis redis 104 Jun 25 12:04 redis.rdb
[root@db01 opt]# systemctl restart redis
[root@db01 opt]# redis-cli
127.0.0.1:6379> get k1
"v1"
04. RDB 持久化总结
没配置save参数时:
1.shutdown/pkill/kill都不会持久化保存
2.可以⼿动执⾏bgsave
配置save参数时:
1.shutdown/pkill/kill均会⾃动触发bgsave持久化保存数据
2.pkill -9 不会触发持久化
恢复时:
1.持久化数据⽂件名要和配置⽂件⾥定义的⼀样才能被识别
2.RDB⽂件只有⼀个数据⽂件,迁移和备份只要这⼀个RDB⽂件即可
注意:
RDB⾼版本兼容低版本,低版本不能兼容⾼版本
3.x >> 5.X >> OK
5.x >> 3.x >> NoOK
第三章:redis AOF持久化
01. AOF 持久化配置
cat >> /opt/redis_6379/conf/redis_6379.conf <<EOF
# aof 持久化配置
appendonly yes
appendfilename "redis.aof"
appendfsync everysec
EOF
02. AOF重写机制
01.清理无效的命令,例如:
set k1 v1
set k2 v2
del k1
aof重写的时候就会把下面两条命令删除
set k1 v1
del k1
02.清理完无效命令后,会压缩文件空间,减小文件大小
03. AOF故障处理
1.aof修复命令不要⽤,因为他的修复⽅案⾮常粗暴,⼀⼑切,从出错的地⽅到最后全部删除
2.任何操作之前,先备份数据
04. 如果设置了过期时间,恢复数据后会如何处理?
1.aof⽂件会记录下过期时间
2.恢复的时候会去对⽐过期时间和当前时间,如果超过了,就删除key
3.key的过期时间不受备份影响