redis是一个高性能的Key-Value类型的数据库,提供了丰富的数据结构,并且将数据存储在内存当中,能够进行快速的读取和写入操作。因为redis的数据是存储在内存当中的,所以一旦服务器重启或者发生故障,就会导致redis的数据丢失。为了保证数据的安全性,我们需要对redis中的数据进行持久化操作。
redis提供了两种数据持久化的基本方式,分别是RDB和AOF,我们可以在redis提供的配置文件中对持久化方式进行配置,采用不同的存储方式,会形成不同的数据存储文件。以下是两种存储方式的基本介绍和优缺点:
RDB(默认持久化方式)
RDB采用一种历史快照的形式对redis当中的所有数据进行存储(全量存储),只保存数据的当前结果,不存储数据构建的过程。
配置步骤:


优点:
- 适合做大规模的数据恢复
- 可以按照业务定时备份
- RDB文件在内存中的加载速度要比AOF快的多
缺点:
- 会造成部分数据的丢失,如果我们的save规则为save 3600 2,那么服务器突然发生故障的时候,可以会导致redis近一个小时内的数据丢失。
- rdb进行数据备份的时候,会将redis当中的数据进行全量备份,如果数据量太大会导致IO严重影响到服务器性能。
AOF
AOF采用日志的方式来对每一个写记录进行记录,会不断地追加到aof文件末尾,随着aof的文件越来越大,redis会对aof文件进行重写的操作,来压缩aof文件的大小。aof文件类似于mysql当中的binlog文件,都是对每一个写入操作进行记录,方便进行数据的恢复。
配置过程:


优点:
更好地保存数据不会丢失,性能高,可做紧急恢复
缺点:
- 相同数据集的数据而言,aof文件要远大于rdb文件,数据恢复速度慢于rdb
- aof运行效率要慢于rdb,每秒同步策略效率较好,不同步效率和rdb相同
RDB+AOF(官方推荐)
RDB和AOF并不互相排斥的关系,我们可以从两个中选择一个或者进行混用。如果我们同时开启了RDB和AOF,那么redis在启动的时候会优先加载AOF。redis之所以选择优先加载aof,是因为加载aof文件相较于加载rdb文件,能够让我们损失更少的数据。

通过上面的学习,我们可以明确地知道rdb和aof的特点:
RDB持久化方式能够在指定的时间间隔对数据进行快照存储,适合做历史数据;AOF持久化方式记录每次对服务器写的操作,当服务器重启的时候会重新这行命令进行数据的恢复,我们可以将这两者的特点结合起来混合使用。
配置方式

配置完成之后,我们的持久化的步骤如下:先使用RDB进行快照存储,然后使用AOF持久化记录所有的写操作,当重写策略满足或手动触发重写的时候,将最新的数据存储为新的RDB记录。这样的话,重启服务的时候会从RDB和AOF两部分恢复数据,既保证了数据完整性,又提高了恢复数据的性能。简单来说:混合持久化方式产生的文件一部分是RDB格式,一部分是AOF格式。
Redis数据持久化:RDB与AOF的比较与混合使用策略
本文介绍了Redis的两种数据持久化方法——RDB和AOF,分析了它们的优缺点,并提出了RDB+AOF混合使用以确保数据完整性和恢复性能的策略。
1151

被折叠的 条评论
为什么被折叠?



