Redis持久化策略

目录

 一、Redis持久化策略-RDB

1.1 RDB的原理:

1.2 RDB默认触发持久化的条件:

1.3 指定RDB数据存储的文件:

1.4 RDB持久化细节分析:

二、Redis持久化策略-AOF:

2.1 AOF的原理:

2.2 AOF触发持久化的条件:

2.3 AOF持久化细节分析:


        Redis是基于内存操作,作为一个数据库也具备持久化能力,但是为了实现高效的读写操作,并不会及时进行数据的持久化,而是按照一定的规则进行持久化操作的。Redis提供了两种持久化策略:

  • RDB(Redis DataBase)
  • AOF(Append only File)

一、Redis持久化策略-RDB

        在满足指定的Redis操作条件时,将内存中的数据以数据快照的方式存储到rdb文件中

1.1 RDB的原理:

        RDB是redis默认的持久化策略,当redis中写操作达到指定的次数同时距离上一次持久化达到指定的时间就会将redis内存中数据生成数据快照保存到指定的rdb文件中。

1.2 RDB默认触发持久化的条件:

RDB默认触发持久化条件
900s 1次: 当操作次数达到1次,900s就会进行持久化
300s 10次: 当操作次数达到10次,300s就会进行持久化
60s 1000次: 当操作次数达到10000次,60s就会进行持久化

        操作次数越多,触发持久化的时间间隔就越短(防止数据丢失) ,我们可以通过修改redis.conf文件,来设置RDB策略的触发条件。

## rdb持久化策略开关
rdbcompression yes

## 配置rdb持久化策略
save 900 1
save 300 10
save 60 10000

1.3 指定RDB数据存储的文件:

        在redis.conf文件中除了可以配置rdb的持久化策略,还可以将生成的数据快照存储的文件进行指定。默认是dbfilename dump.rdb。

1.4 RDB持久化细节分析:

 RDB持久化优点:

  1. 在数据量较小的情况下,执行速度比较快
  2. 由于RDB是以数据快照形式保存的,我们可以通过检索拷贝rdb文件轻松实现redis数据移植

 RDB持久化缺点:

  1. 如果redis出现故障,存在数据丢失的风险,丢失上一次持久化之后的操作数据(因为每次持久化,都会有操作次数以及时间间隔)
  2. RDB采用的数据快照的形式进行的持久化,不适合实时性持久化
  3. 如果数据量庞大,在RDB持久化过程中生成数据快照子进程执行时间过长,会导致redis卡顿,因此Save的时间周期设置不宜过短(默认配置即可)

二、Redis持久化策略-AOF:

        AOF(Append Only File),当达到设定的触发条件时,将redis执行的写操作指令存储到aof文件中,redis默认是未开启aof持久化的。

2.1 AOF的原理:

        redis将每一个成功的写操作写入aof文件中,当redis重启的时候就执行aof文件中的指令以恢复数据

2.2 AOF触发持久化的条件:

AOF默认持久化配置
appendfsync always 只要进行成功写操作,aof就执行
appendfsync everysec 每秒进行一次aof(默认)
appendfsync no 让redis执行决定aof

        redis默认是AOF未开启的;可以通过将redis配置文件中‘appendonly no’修改为‘appendonly yes’进行开启 ;AOF也可以设置aof路径,默认是‘appendfilename "appendonly.aof"’

2.3 AOF持久化细节分析:

  1. 可以通过拷贝aof文件jinxingredis数据移植
  2. aof存储的是指令,而且会对指令进行整理,而RDB直接生成的数据快照,在数据量不大的时候会比较快
  3. aof是对文件进行增量更新,更适合实时性持久化
  4. redis官方建议是同时开启两种持久化策略,如果同时存在aof文件以及rdb文件,当我们需要进行数据移植的时候,优先选择aof(数据完整性会相对高一点)

你可能感兴趣的:(分布式技术,redis,jvm,java)