redis持久化
Published in:2022-06-25 | category: 学习

Redis提供了两种持久化方式:RDB,AOF

RDB:

        RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是 Snapshot 快照(数据库中所有键值对数据)。恢复时是将快照文件直接读到内存里。

        通过保存数据库中的键值对来记录数据库的状态。

        RDB 有两种触发方式,分别是自动触发和手动触发。

优点:

        (1)节省磁盘空间,生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

        (2)恢复速度快。

        (3)适合大规模的数据恢复。

缺点:

        (1)因为bgsave每次运行都要执行fork操作创建子进程,属于重量级操作,fork时,内存中数据被复制了一份,大致两倍的膨胀性需要考虑

        (2)最后一次持久化之后的数据可能会丢失

AOF:

        AOF 被称为追加模式,或日志模式,是 Redis 提供的另一种持久化策略,它能够存储 Redis 服务器已经执行过的的命令,并且只记录对内存有过修改的命令,这种数据记录方法,被叫做“增量复制”,其默认存储文件为appendonly.aof。

        通过保存Redis服务器所执行的写命令来记录数据库状态。

优点:

        (1)丢失数据概率低。AOF 持久化的方法提供了多种的同步频率,即使使用默认的同步频率每秒同步一次,Redis 最多也就丢失 1 秒的数据而已。

        (2)AOF 文件使用 Redis 命令追加的形式来构造,因此,即使 Redis 只能向 AOF 文件写入命令的片断,使用 redis-check-aof 工具也很容易修正 AOF 文件。

缺点:

        (1)比RDB占用更多磁盘空间。

        (2)恢复备份速度慢

        (3)每次读写都同步的话,有一定的性能压力。

        (4)RDB 使用快照的形式来持久化整个 Redis 数据,而 AOF 只是将每次执行的命令追加到 AOF 文件中,因此从理论上说,RDB 比 AOF 方式更健壮。官方文档也指出,AOF 的确也存在一些 BUG,这些 BUG 在 RDB 没有存在。

Prev:
Mybatis-plus常用方法
Next:
关于redis的学习