1、快照(Snapshot)
1.1快照生成方式:
1.1.1BGSAVE指令:redis调用fork创建一个子进程,子进程将快照写入磁盘中,父进程继续处理命令请求,子进程和父进程共享内存。
1.1.2.SAVE指令:接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应任何其他的命令。
1.1.3.服务器配置
如果设置多个save配置选项,当任意一个save配置选项条件满足,redis也会触发一次BGSAVE命令,以下是redis.windows.conf文件的代码,可以修改save配置选项
1.1.4.SHUTDOWN指令
当redis通过shutdown指令接收到关闭服务器的请求时,会执行一个save命令,阻塞所有的客户端,不再执行客户端执行发送的任何命令,并且在save命令执行完毕之后关闭服务器
1.1.5 AOF
在redis的默认配置中AOF持久化机制是没有开启的,需要在配置中开启 appendonly yes。
AOF重写:当AOF文件体积大于64M,并且AOF文件的体积比上一次重写之后体积大了至少一倍(100%)时,会自动触发
重写流程:
-1. redis调用fork ,现在有父子两个进程 子进程根据内存中的数据库快照,往临时文件中写入重建数据库状态的命令
- 2. 父进程继续处理client请求,除了把写命令写入到原来的aof文件中。同时把收到的写命令缓存起来。这样就能保证如果子进程重写失败的话并不会出问题。
- 3. 当子进程把快照内容写入已命令方式写到临时文件中后,子进程发信号通知父进程。然后父进程把缓存的写命令也写入到临时文件。
- 4. 现在父进程可以使用临时文件替换老的aof文件,并重命名,后面收到的写命令也开始往新的aof文件中追加。:
1.2 redis.windows.conf的一些配置项
BGSAVE、SAVE快照文件名称:dbfilename dump.rdb
快照生成位置:dir ./
快照BGSAVE自动触发条件:save xx xx
开启AOF持久化:appendonly yes
AOF文件名称:appendfilename "appendonly.aof"指定日志同步频率:appendfsync everysec|always|no
推荐使用everysec每秒执行一次,always会降低计算机性能,no由操作系统自己决定同步频率