redis(七)、持久化方案
一、快照(snapshotting)方式:简称RDB:快照,顾名思义可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可。
配置:redis.conf
1、 (这3个选项都屏蔽,则rdb禁用)
save 900 1 // 900内,有1条写入,则产生快照
save 300 1000 // 如果300秒内有1000次写入,则产生快照
save 60 10000 // 如果60秒内有10000次写入,则产生快照
2、RDB其他重要配置
stop-writes-on-bgsave-error yes // 后台备份进程出错时,主进程停不停止写入?
rdbcompression yes // 导出的rdb文件是否压缩
Rdbchecksum yes // 导入rbd恢复时数据时,要不要检验rdb的完整性
dbfilename dump.rdb //导出来的rdb文件名
dir ./ //rdb的放置路径
二、AOF方式:由于快照的方式是在一定时间间隔内做一次写入操作,所以可能发生redis意外挂掉的情况而丢失最后依次快照的所有修改数据、aof有更好的持久化性,redis会为每个收到写命令的操作都通过write函数追加到命令中,当redis重启时会重新执行文件中保存的写命令来在内存中重新建立这个数据库的内容:这个文件在bin目录下:appendonly.aof;
AOF设置:
appendonly yes 启动aof持久化方式。
#appendfsync always 收到命令就立即写入到磁盘,效率最慢,但是保证完全的持久化。
#appendfsync everyec 每秒钟写入到磁盘一次,在性能和持久化方面做了很好的折中。
#appendfsync no 完全依赖os,性能最好,持久化没保证。