Redis提供两种不同的持久化方法来将数据存储到硬盘中来。一种方法叫快照(snapshotting),它可以将存在于某一时刻的所有数据写入到硬盘里面。另一种方法叫之追加文件(append only File,AOF),它会在执行写入命令的时候,将被执行的写命令复制到硬盘里面。这两种方法既可以同时使用,又可以单独使用,具体的使用哪种持久化方法,需要根据用户的数据以及应用来决定。
以下是一些常用的配置项:
save 900 1 #900秒钟内有1次修改
stop-writes-on-bgsave-error yes #在保存出错时停止写入
rdbcompression yes #是否压缩
dbfilename "dump.rdb" #快照文件名称
dir "/usr/redis/sbin/" #快照和AOF文件的保存路径
------------------AOF---------------------
appendonly yes #是否启用AOF
appendfilename "appendonly.aof" #AOF文件名称
appendfsync everysec #每秒执行一次AOF操作
no-appendfsync-on-rewrite no #在执行同步操作时是否执行AOF操作
auto-aof-rewrite-percentage 100 #在AOF文件超过100%时执行压缩
auto-aof-rewrite-min-size 64mb #在AOF文件超过64MB时执行压缩
创建快照的方法有以下几种:
1.执行BGSAVE命令,Redis会创建一个子进程,然后子进程负责将快照写入硬盘
2.执行SAVE命令,Redis在快照创建完之前不再相应其他任何命令。不常用
3.如果用户设置了save配置选择,Redis会自动触发BGSAVE命令
4.当Redis通过Shutdown命令接收到关闭服务器的请求时,会执行SAVE命令
5.当一个Redis服务器连接另一条Redis服务器,并向对方发送SYNC命令来开始一次复制操作时,如果主服务器没有在执行BGSAVE命令,那么主服务器会执行BGSAVE命令。
在使用快照持久化保存数据时,一定要记住:如果系统真的发生崩溃,用户将丢失最近一次生成快照之后更改的所有数据。因此,快照持久化只适用于那些即使丢失一部分数据也不会造成问题的应用程序,而不能接受丢失数据的应用程序可以考虑使用AOF持久化。