本文共 758 字,大约阅读时间需要 2 分钟。
持久化即将数据存储在硬盘中,Redis为我们提供了两种持久化选项:一种叫快照(snapshoting),另一种叫只追加文件(append-only file,AOF)。
快照(snapshoting)
快照就是将某个时刻的数据持久化到硬盘。如果系统崩了,那么用户只是丢失最近一次生成快照之后更改的数据,之前的数据还是存在的。
创建快照的几种方法:
- 客户端向Redis发送BGSAVE命令创建快照。
- 客户端向Redis发送SAVE命令创建快照。
- 设置save配置选项,可以自动触发BGSAVE命令,触发一次写一次快照。
- 当一个Redis服务器与另一个Redis服务器互联时,并且向对方发送SYNC命令,如果主服务器没有执行BGSAVE或者没有刚执行BGSAVE,那么就会执行BGSAVE并创建一个快照。
AOF
AOF就是在执行写命令的时候,被执行的写命令也会被复制到硬盘里。通过名字append就会知道,这要写也是写在文件的末尾,以此来记录数据的变化。AOF持久化可以通过配置append-only yes选项打开,配置appendfsync可以确定同步频率。
appendfsync选项
- always,每个Redis命令都执行,也就是都要同步到硬盘,很显然这样搞得Redis速度也够呛,但是这种情况系统崩了的话,丢失的数据也最少。
- everysec,看名字就知道是每秒钟,稍稍比alway写的频率低了一些。这种方法基本权衡了安全和性能,写的速度也没那么快了,但也不至于像no那样丢失的命令那么多。
- no,这个就完全取决于操作系统了,OS说啥时候同步就啥时候同步。这个方法基本就不推荐使用了,因为刚才也说了,如果系统出点啥问题,这个选项丢失数据最多
参考资料
《》, siah L. Carlson, Manning
转载地址:http://cihii.baihongyu.com/