redis提供持久化策略,在适当的时机采用适当手段把内存中的数据持久化到磁盘中,每次redis服务启动时,都可以把磁盘上的数据再次加载内存中使用。
RDB
RDB策略:在指定时间间隔内,redis服务执行指定次数的写操作,会自动触发一次持久化操作。
RDB策略是redis默认的持久化策略,redis服务开启时这种持久化策略就已经默认开启了。
- save <seconds> <changes>:配置复合的快照触发条件,即Redis 在seconds秒内key改变changes次,Redis把快照内的数据保存到磁盘中一次。默认的策略是:
-
- 1分钟内改变了1万次
-
- 或者5分钟内改变了10次
-
- 或者15分钟内改变了1次
如果要禁用Redis的持久化功能,则把所有的save配置都注释掉。
- stop-writes-on-bgsave-error:当bgsave快照操作出错时停止写数据到磁盘,这样能保证内存数据和磁盘数据的一致性,但如果不在乎这种一致性,要在bgsave快照操作出错时继续写操作,这里需要配置为no。
- rdbcompression:设置对于存储到磁盘中的快照是否进行压缩,设置为yes时,Redis会采用LZF算法进行压缩;如果不想消耗CPU进行压缩的话,可以设置为no,关闭此功能。
- rdbchecksum:在存储快照以后,还可以让Redis使用CRC64算法来进行数据校验,但这样会消耗一定的性能,如果系统比较在意性能的提升,可以设置为no,关闭此功能。
- dbfilename:Redis持久化数据生成的文件名,默认是dump.rdb,也可以自己配置。
- dir:Redis持久化数据生成文件保存的目录,默认是./即redis的启动目录,也可以自己配置。
AOF
采用操作日志来记录进行每一次写操作,每次redis服务启动时,都会重新执行一遍操作日志中的指令。
效率低下,redis默认不开启AOF功能。
- appendonly:配置是否开启AOF,yes表示开启,no表示关闭。默认是no。
- appendfilename:AOF保存文件名
- appendfsync:AOF异步持久化策略
- always:同步持久化,每次发生数据变化会立刻写入到磁盘中。性能较差但数据完整性比较好(慢,安全)
- everysec:出厂默认推荐,每秒异步记录一次(默认值)
- no:不即时同步,由操作系统决定何时同步。
- no-appendfsync-on-rewrite:重写时是否可以运用appendsync,默认no,可以保证数据的安全性。
- auto-aof-rewrite-percentage:设置重写的基准百分比
- auto-aof-rewrite-min-size:设置重写的基准值
小结
Redis 需要手动开启AOF持久化方式,AOF 的数据完整性比RDB高,但记录内容多了,会影响数据恢复的效率。
关于Redis持久化的使用:若只打算用Redis 做缓存,可以关闭持久化。若打算使用Redis 的持久化,建议RDB和AOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB。
AOF与RDB模式可以同时启用,这并不冲突。如果AOF是可用的,那Redis启动时将自动加载AOF,这个文件能够提供更好的持久性保障。
根据数据的特点决定开启哪种持久化策略;
一般情况,开启RDB足够了。