db文件持久化
- 修改配置文件 测试rdb文件生成机制
#save 900 1
#save 300 10
#save 60 10000
save 60 5 #60秒内修改了5次key 则生成
#一分钟内生成5个key
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> set k4 v4
OK
127.0.0.1:6379> set k5 v5
OK
生成了dump.rdb文件
当执行FLUSHDB/ FLUSHALL命令时也会生成dump.rdb文件
rdb文件生成触发条件
- 满足save条件
- 执行FLUASHDB/FLUASHALL命令时
- 结束redis服务时
恢复rdb文件
使用命令查看当前rdb的存放目录
127.0.0.1:6379> CONFIG GET dir
1) "dir"
2) "/usr/local/bin" #只要把rdb文件放在这个目录下 启动redis服务时会自动加载
rdb持久化的缺点:
-
rdb持久化需要一定的时间间隔和触发条件,如果在没有满足条件时宕机了,则数据就会丢失
-
rdb持久化是主进程fork一条子进程进行操作,会占用一定的内存资源
Redis AOF持久化机制
- 在配置文件中开启aof持久化,其他基本 不用变
appendonly yes #默认是no
appendonly.aof文件保存在 启动目录下,里面记录的就是执行过的命令
如果aof文件损坏,redis服务将不能启动
可以使用check工具修改aof文件
[root@localhost bin]# redis-check-aof --fix appendonly.aof
0x 4d: Expected \r\n, got: 6461
AOF analyzed: size=94, ok_up_to=52, diff=42
This will shrink the AOF from 94 bytes, with 42 bytes, to 52 bytes
Continue? [y/N]: y
Successfully truncated AOF
[root@localhost bin]#
修复后,出错的哪条命令被删除了!!!
aof文件重写
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
如果两者同时开启,会优先选择aof。aof更实时一些