Redis持久化
Redis提供多种不同级别的持久化方式:一种是RDB,另一种是AOF。
RDB会根据配置的规则定时将内存中的数据持久化到硬盘上,AOF则是在每次执行写命令之后将命令记录下来。两种持久化方式可以单独使用,但是通常会将两者结合使用。
RDB持久化和AOF持久化之间的异同是非常重要的,以下几个小节将详细地介绍这这两种持久化功能,并对它们的相同和不同之处进行说明。
RDB持久化
RDB持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
RDB方式的持久化是通过快照的方式完成的。当符合某种规则时,会将内存中的数据全量生成一份副本存储到硬盘上,这个过程称作”快照”,Redis会在以下几种情况下对数据进行快照。
- 根据配置规则进行自动快照。
- 用户执行
SAVE
,BGSAVE
命令。 - 执行
FLUSHALL
命令。 - 执行复制(
replication
)。执行快照场景
根据配置自动快照,Redis允许用户自定义快照条件,当满足条件时自动执行快照,快照规则的配置方式如下。1
2
3save 900 1
save 300 10
save 60 10000
每个快照条件独占一行,他们之间是或(||
)关系,只要满足任何一个就进行快照。上面配置save
后的第一个参数T
是时间,单位是秒,第二个参数M
是更改的键的个数,含义是:当时间T
内被更改的键的个数大于M
时,自动进行快照。比如save 900 1
的含义是15分钟内(900s)被更改的键的个数大于1时,自动进行快照操作。