Redis持久化
Redis提供了两种不同的持久化方法将数据存储到硬盘。一种是快照(snapshotting),它可以将存在于某一时刻的所有数据都写入硬盘。另一种方法叫只追加文件(append-only-file)AOF,它会在执行写命令时,将被执行的写命令复制得到硬盘
快照持久化
Redis可以通过创建快照来获得存储在内存里面的数据在某个时间点上的副本。根据配置,快照将被写入dbfilename选项指定的文件里面,并存储在dir选项指定的路径下。如果在新的快照文件创建完成之前,Redis,系统或者硬件出现故障,那么Redis将丢失最近一次快照之后写入的数据。
如何使用
客户端可以通过向Redis发送BGSAVE命令来创建一个快照,当Redis执行BGSAVE命令时,会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,父进程则 继续处理命令请求 。
# The working directory.(RDB文件存储的目录)
dir ./
# The filename where to dump the DB(RDB文件存储的文件名)
dbfilename dump-6379.rdb
①客户端自定义save配置项,比如save 900 1 表示从Redis最近一次创建快照之后开始算起,如果在900秒之内有一次写入,那么Redis会自动触发BGSAVE命令。如果配置了多个save选项,那么只要其中一个save选项的条件满足都会触发一次BGSAVE命令。
save 900 1
save 300 10
save 60 10000
②执行flushall命令会触发rdb规则
③执行SHUTDOWN命令,redis接收到关闭服务器请求时,会执行一个SAVE命令,阻塞所有客户端,不再执行客户端发送的任何命令,并在SAVE命令执行完毕之后关闭服务器。
如何关闭
- 关闭rdb的命令:config set save “”
- 配值save选项为""
save ""
如何恢复
- 获取redis目录
127.0.0.1:6379> config get dir 1) "dir" 2) "/usr/local/redis-6.0.1"
- 停止redis服务
- 拷贝redis备份文件(dump.rdb)到redis目录下
- 重新启动redis服务