Redis笔记之数据安全与性能保障

Posted by Jesse' Notes on June 27, 2017

一、持久化

Redis拥有两种不同形式的持久化方法: 第一种快照持久化。 快照就是在某个时间点上获得存储在内存里面的数据的副本。

1
2
3
4
5
6
向Redis发送BGSAVE命令,Redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求。
还可以配置save选项,例如SAVE 60 10000 即60s内完成10000次操作即可触发BGSAVE
当两台Redis服务器连接,其中一台接收到SYNC命令时执行BGSAVE

另一种是SAVE命令,Redis会中断所有操作来完成快照操作。
当服务器接收到停机指令时会执行SAVE

快照持久化的缺点很明显,容易丢失数据。如果系统崩溃发生用户将丢失最后一次快照之后的所有数据。 第二种AOF持久化。AOF方法将所有修改了数据库的命令都写入一个只追加(append-only)文件里面,用户可以根据数据的重要程度,将只追加写入设置为从不同步(sync)、每秒同步一次或者每写入一个命令就同步一次。 Redis不断将命令写入AOF中会导致AOF文件过大,调用BGREWRITEAOF命令,Redis创建一个子进程,然后由子进程负责对AOF文件进行重写。