Redis 持久化

Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化

Redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式。可以单独使用其中一种或将二者结合使用

RDB持久化:

RDB方式的持久化是通过快照(snapshotting)完成的,当符合一定条件时Redis会自动将内存中的数据进行快照并持久化到硬盘

RDB是Redis默认采用的持久化方式,在redis.conf配置文件中默认有此下配置:

save 900 1

save 300 10

save 60 10000

save 开头的一行就是持久化配置,可以配置多个条件(每行配置一个条件),每个条件之间是“或”的关系:
  “save
900 1”表示15分钟(900秒钟)内至少1个键被更改则进行快照
  “save 300 10”表示5分钟(300秒)内至少10个键被更改则进行快照
  “save 60 10000”表示60s内至少1000个键被更改则进行快照

在redis.conf中:配置dir指定rdb快照文件的位置配置dbfilenam指定rdb快照文件的名称

Redis启动后会读取RDB快照文件,将数据从硬盘载入到内存。根据数据量大小与结构和服务器性能不同,这个时间也不同;通常将记录一千万个字符串类型键、大小为1GB的快照文件载入到内存中需要花费20~30

通过RDB方式实现持久化,一旦Redis异常退出,就会丢失最后一次快照以后更改的所有数据。这就需要开发者根据具体的应用场合,通过组合设置自动快照条件的方式来将可能发生的数据损失控制在能够接受的范围;如果数据很重要以至于无法承受任何损失,则可以考虑使用AOF方式进行持久化

AOF持久化:

redis默认是不使用该方式持久化的。aof方式的持久化,是操作一次redis数据库,则将操作的记录存储到aof持久化文件中,可以通过appendonly参数开启:appendonly yes

AOF文件的保存位置和RDB文件的位置相同,都是通过dir参数设置的,默认的文件名是appendonly.aof,可以通过appendfilename参数修改:appendfilename appendonly.aof

原文地址:https://www.cnblogs.com/roxy/p/7774709.html