Reids数据安全-持久化

数据安全-持久化

持久化选项

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 让操作系统来决定应该何时进行同步
阅读 302

推荐阅读