数据安全-持久化
持久化选项
Redis 提供两种不同的持久化方法来将数据存储到硬盘里面。
- 快照(snapshotting):将存在某一时刻的所有数据都写入硬盘里面。
- 只追加文件(append-only file):在执行命令时,将被执行的写命令复制到硬盘里面。
两组不同的配置选项控制着Redis将数据写入硬盘里面的方式,如下展示了这些配置选项以及它们的示例配置值:
```
快照持久化选项
save 60 10000 # 当60s内有10000次写入
stop-writes-on-bgsave-error no
rdbcompression yes
dbfilename dump.rdb
AOF 持久化选项
appendonly no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
dir ./ #共享选项,这个选项决定了快照文件和AOF文件的保存位置
```
快照持久化
创建快照有几种方式:
- 客户端向Redis发送BGSAVE命令来创建一个快照。对于支持BGSAVE命令的平台来说(除Windows平台),Redis会调用fork来创建一个子进程,然后子进程负责将快照写入硬盘,而父进程则继续处理命令请求。
- 客户端向Redis发送SAVE命令来创建一个快照。接到SAVE命令的Redis服务器在快照创建完毕之前将不会响应任何其他命令。SAVE命令不常用,通常只会在没有足够内存去执行BGSAVE命令的情况下,又或者即使等待持久化操作执行完毕也无所谓的情况下,才会使用SAVE命令。
- 如果用户设置了SAVE配置选项,比如 **SAVE 60 10000** ,那么从Redis最近一次创建快照之后开始算起,当“60秒之内有10000次写入”这个条件被满足时,Redis就会自动触发BGSAVE命令。如果用户设置了多个save配置选项,那么当任意一个save配置选项所设置的条件被满足时,Redis就会触发一次BGSAVE命令。
- 当一个Redis服务器连接另一个Redis服务器,并向对方发送SYNC命令来开始一次复制操作的时候,如果主服务器目前没有在执行BGSAVE操作,或者主服务器并非刚刚执行完BGSAVE操作,那么主服务器就会执行BGSAVE命令。
AOF持久化
appendfsync选项及同步频率:
选项 | 同步频率 |
---|---|
always | 每个Redis写命令都要同步写入硬盘,这样做会严重降低Redis性能 |
everysec | 每秒执行一次同步,显示地将多个写命令同步到硬盘 |
no | 让操作系统来决定应该何时进行同步 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。