-
数据从内存保存到磁盘的频率设置
save 900 1 //15分钟内有1个key改变即存盘 save 300 10 //5分钟内有10个key改变即存盘 save 60 10000 //1分钟内有10000个key改变即存盘
- 也可以进行手动存盘
save //阻塞写存盘 bgsave //不阻塞写存盘
RDB的优缺点
-
优点:
- 高性能的持久化实现:创建一个子进程来执行持久化,先将数据写入临时文件,持久化过程结束后,再用这个临时文件替换上次持久化好的文件
- 过程中主进程不做任何IO操作
- 比较适合大规模数据恢复,且对数据完整性要求不是非常高的场合
- 缺点:
- 意外宕机时,丢失最后一次持久化的所有数据
配置RDB
配置RDB参数
# [root@redis7 ~]# vim /etc/redis/6379.conf dbfilename dump.rdb save 900 1 #save 300 10 save 120 10 save 60 10000
清空rdb数据
# 停止redis服务 [root@redis7 ~]# service redis_6379 stop Stopping ... Redis stopped # 删除数据 [root@redis7 ~]# rm -rf /var/lib/redis/6379/* # 启动服务 [root@redis7 ~]# service redis_6379 start Starting Redis server... # 查看数据文件,因为没有存储过任何数据,所以不存在RDB文件 [root@redis7 ~]# ls /var/lib/redis/6379/
存储数据
# 120秒内添加10个数据 [root@redis7 ~]# redis-cli 127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 OK 127.0.0.1:6379> MSET k6 v6 k7 v7 k8 v8 k9 v9 k10 v10 OK 127.0.0.1:6379> KEYS * 1) "k10" 2) "k2" 3) "k3" 4) "k9" 5) "k8" 6) "k4" 7) "k5" 8) "k7" 9) "k6" 10) "k1" 127.0.0.1:6379> exit [root@redis7 ~]# ls /var/lib/redis/6379/ dump.rdb
- 验证备份还原
# 备份数据文件 [root@redis7 ~]# cp /var/lib/redis/6379/dump.rdb ~/ # 模拟误删除数据 [root@redis7 ~]# redis-cli 127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> KEYS * (empty list or set) 127.0.0.1:6379> exit # 恢复数据 [root@redis7 ~]# service redis_6379 stop Stopping ... Redis stopped [root@redis7 ~]# cp dump.rdb /var/lib/redis/6379/ # 用备份文件覆盖目标文件 cp: overwrite ‘/var/lib/redis/6379/dump.rdb’? y # 启动服务并验证 [root@redis7 ~]# service redis_6379 start Starting Redis server... [root@redis7 ~]# redis-cli 127.0.0.1:6379> KEYS * 1) "k6" 2) "k3" 3) "k4" 4) "k1" 5) "k8" 6) "k7" 7) "k9" 8) "k5" 9) "k10" 10) "k2"
Append Only File(AOF)
- 追加方式记录写操作的文件
- 记录redis服务所有写操作
- 不断的将新的写操作,追加到文件的末尾
- 默认没有启用
- 使用cat命令可以查看文件内容
AOF文件记录写操作的方式
- appendfsync always:时时记录,并完成磁盘同步
- appendfsync everysec :每秒记录一次,并完成磁盘同步
- appendfsync no:写入aof ,不执行磁盘同步
AOF优点与缺点
-
优点:
- 可以灵活设置持久化方式
- 出现意外宕机时,仅可能丢失1秒的数据
-
缺点:
- 持久化文件的体积通常会大于RDB方式
- 执行fsync策略时的速度可能会比RDB方式慢
配置AOF
- 修改配置文件
[root@redis7 ~]# redis-cli 127.0.0.1:6379> CONFIG SET appendonly yes OK 127.0.0.1:6379> CONFIG REWRITE OK 127.0.0.1:6379> SAVE OK 127.0.0.1:6379> exit # 查看AOF文件 [root@redis7 ~]# ls /var/lib/redis/6379/ appendonly.aof dump.rdb
- 验证备份还原
# 备份AOF文件
[root@redis7 ~]# cp /var/lib/redis/6379/appendonly.aof ~/
# 删除数据
[root@redis7 ~]# redis-cli
127.0.0.1:6379> KEYS *
1) "k6"
2) "k3"
3) "k4"
4) "k1"
5) "k8"
6) "k7"
7) "k9"
8) "k5"
9) "k10"
10) "k2"
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> KEYS *
(empty list or set)
127.0.0.1:6379> exit
# 恢复数据
[root@redis7 ~]# service redis_6379 stop
Stopping ...
Redis stopped
[root@redis7 ~]# rm -rf /var/lib/redis/6379/*
[root@redis7 ~]# cp appendonly.aof /var/lib/redis/6379/
# 启动服务并验证
[root@redis7 ~]# service redis_6379 start
Starting Redis server...
[root@redis7 ~]# redis-cli
127.0.0.1:6379> KEYS *
1) "k10"
2) "k3"
3) "k2"
4) "k9"
5) "k1"
6) "k6"
7) "k5"
8) "k8"
9) "k7"
10) "k4"