Redis持久化策略

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,关闭此功能。
  • dbfilenameRedis持久化数据生成的文件名,默认是dump.rdb,也可以自己配置。
  • dirRedis持久化数据生成文件保存的目录,默认是./redis的启动目录,也可以自己配置。

AOF

采用操作日志来记录进行每一次写操作,每次redis服务启动时,都会重新执行一遍操作日志中的指令。
效率低下,redis默认不开启AOF功能。

  • appendonly:配置是否开启AOFyes表示开启,no表示关闭。默认是no
  • appendfilenameAOF保存文件名
  • appendfsyncAOF异步持久化策略
    •   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 的持久化建议RDBAOF都开启。其实RDB更适合做数据的备份,留一后手。AOF出问题了,还有RDB

AOF与RDB模式可以同时启用,这并不冲突。如果AOF是可用的,那Redis启动时将自动加载AOF,这个文件能够提供更好的持久性保障。

根据数据的特点决定开启哪种持久化策略;
一般情况,开启RDB足够了。

注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层——注重细节——关注底层
原文地址:https://www.cnblogs.com/PJG20/p/14704148.html