redis学习-持久化机制

前言

redis是一个支持持久化的数据库,也就是说redis需要将内存中的数据往硬盘中来保持持久化。

redis持久化有两种方式:

  1. snapshotting(快照)方式,也即RDB方式
  2. append-only(aof)方式

RDB

snapshotting(快照)方式,也即RDB方式,是redis的默认方式,将内存中的数据库以快照方式写入二进制文件中(dump.rdb),可以通过配置文件设定,在一段时间n秒内,修改了超过m个key,则自动做快照。

快照方式刷盘有时间间隔,应对突发状况会导致最近一次快照以后的数据全部丢失。在数据不强求完整性的情况下可以选择这种方式。

snapshotting的默认设置如下:

save 900 1	# 900s内 1个key被修改 则自动刷盘,下同理
save 300 10
save 60 10000

AOF

append-only(aof)方式在每一次写命令后都会写入到aof文件中。当服务器重启后会将执行aof中存储的全部命令以恢复数据库。

aof方式默认也不是立即写到磁盘中,可以通过配置文件修改策略,在性能和持久性中找一个平衡。

aof设置如下

appendonly yes     # 开启aof模式

# appendfsync always      # 接到命令立即写入磁盘,性能差,持久性强
# appendfsync everysec      # 每秒写盘一次,性能和持久化折中,默认是这种方式
# appendfsync no      # 性能最优,但持久性依赖OS,just let the OS flush the data when it wants.

redis使用率高的情况下每秒10W+的命令是常有的,因此在生产环境下使用always是最稳妥的策略。

原文地址:https://www.cnblogs.com/bcomll/p/13497391.html