RDB持久化
redis默认开启了rdb存储,保存在redis目录下的dump.rdb,策略如下
save 900 1
save 300 10
save 60 10000
如果满足900秒内有1个键值被改动,则自动保存一次数据集
如果满足300秒内有10个键值被改动,则自动保存一次数据集
如果满足60秒内有10000个键值被改动,则自动保存一次数据集
AOF持久化
默认不开启,需要在redis.conf中开启
appendonly yes
appendfilename "appendonly.aof"
#appendfsync always
appendfsync everysec
#appendfsync no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
appendonly默认是no,改为yes就开启了AOF持久化,默认文件名称为appendonly.aof
修改appendfilename可以修改默认文件名称
追加同步操作appendfsync有三个选项
always:每当有新命令追加到AOF文件都会执行一次fsync,非常慢也非常安全
everysec:每隔一秒执行一次fsync,足够快,即使数据丢失也只是一秒的数据
no:从不进行fsync,将数据交给操作系统处理,更快却更不安全
aof文件相当于一个命令日志,每当有一条命令执行,都会被追加到文件末尾,例如我们循环执行100次set操作,就会有100条记录,虽然99条记录都是多余的,此时我们就需要缩减aof文件
方法一:
cd redis根目录/src/redis-cli
127.0.0.1:6379>bgrewriteaof
1
2
通过命令行来手工执行rewrite操作,此时我们在看aof文件,确实比原来少了很多。
方法二:
通过配置文件auto-aof-rewrite-percentage和auto-aof-rewrite-min-size和参数,当aof文件满足条件的时候自动触发rewrite操作。
auto-aof-rewrite-percentage:aof重写百分比
auto-aof-rewrite-min-size:aof重写最小值
两个条件相辅相成,只有同时满足才会触发rewrite操作。
例如你原来的aof文件为2MB,即使现在已经达到4MB,满足了auto-aof-rewrite-percentage的100%的条件,但是由于auto-aof-rewrite-min-size最小值为64MB,不满足,所以仍然不会触发rewrite操作。
更多技术资讯可关注:gzitcast