Redis持久化
Redis持久化:
RDB:默认情况下,Redis是将内存中的所有数据保存到名为dump.rdb的文件中,内容是二进制的。
具体保存的时机为:在多少秒内数据有多少改动,然后持久化一次数据。
配置文件内为save 100 1000
此种形式。可以配置多个save X X,多个条件满足任意一个都会持久化数据。
也可以手动执行RDB快照,客户端执行save命令或者bgsave命令,执行之后会持久化内存中所有的数据,覆盖原有的RDB文件。
关闭RDB持久化,只需要注释掉所有的save X X。
如果在RDB持久化触发之前,Redis宕机,会丢失部分数据(上一次持久化之后的数据)
AOF:将所有的修改命令(增删改)写入AOF文件。
AOF执行时机:
Appendfsync always
:每次有修改命令就执行一次fsync,追加命令到AOF文件末尾。
Appendfsync everysec
:每秒执行一次fsync,故障时会丢失1秒的数据。
Appendfsync no
:不主动执行fsync,具体时机由操作系统决定。数据不安全。
AOF文件中的命令会重写:把一些垃圾或者重复的命令简化。
列如:incr autonum
;执行五次会简化为set autonum 5+
原来的数值。
AOF重写的频率:
Auto-aof-rewritre-min-size 100mb
意思是:AOF文件达到100mb时会重写。
Auto-aof-rewrite-percentage 100
意思是:AOF至上一次重写增大了100%之后会再次重写。
手动重写命令:bgrewriteaof
(后台子进程执行)
4.0之后混合持久化:
开启方式:在配置文件里面
Aof-use-rdb-preamble no
默认为no,改为yes开启。开启此配置需要开启aof持久化。
开启后,aof在重写时会把内存中的数据以rdb文件存储的二进制格式写入aof文件,在下一次触发aof重写之前还是追加修改命令的形式持续持久化数据。