关注我

    我的微信
在线咨询 x
在线咨询
有什么可以帮到你
点击咨询

Redis 持久化 —— RDB 持久化方式

简介Redis Database(RDB),就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。RDB 保存了在某个时间点的数据集(全部数据)。

一、持久化概述


持久化可以理解为存储,就是将数据存储到一个不会丢失的地方,如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就算是一种持久化

Redis 的数据存储在内存中,内存是瞬时的,如果 linux 宕机或重启,又或者 Redis 崩溃或重启,所有的内存数据都会丢失,为解决这个问题,Redis 提供两种机制(RDB 方式 和 AOF 方式)对数据进行持久化存储,便于发生故障后能迅速恢复数据。


二、 什么是 RDB 方式


Redis Database(RDB),就是在指定的时间间隔内将内存中的数据集快照写入磁盘,数据恢复时将快照文件直接再读到内存。

RDB 保存了在某个时间点的数据集(全部数据)。存储在一个二进制文件中,只有一个文件。默认是 dump.rdb。RDB 技术非常适合做备份,可以保存最近一个小时,一天,一个月的全部数据。保存数据是在单独的进程中写文件,不影响 Redis 的正常使用。RDB 恢复数据时比其他 AOF 速度快。


三、如何实现


RDB 方式的数据持久化,仅需在 redis.conf 文件中配置即可,默认配置是启用的。在配置文件 redis.conf 中搜索 SNAPSHOTTING,查找在注释开始和结束之间的关于 RDB的配置说明。配 SNAPSHOTTING 置地方有三处。

①:配置执行 RDB 生成快照文件的时间策略。

对 Redis 进行设置,让它在“ N 秒内数据集至少有 M 个 key 改动”这一条件被满足时,自动保存一次数据集。



①:配置执行 RDB 生成快照文件的时间策略。

对 Redis 进行设置,让它在“ N 秒内数据集至少有 M 个 key 改动”这一条件被满足时,自动保存一次数据集。

配置格式:save <seconds> <changes>

save 900 1

save 300 10

save 60 10000


②:dbfilename:设置 RDB 的文件名,默认文件名为 dump.rdb

③:dir:指定 RDB 文件的存储位置,默认是 ./ 当前目录


配置步骤:

①:查看 ps -ef | grep redis ,如果 redis 服务启动,先停止。

Redis 持久化 RDB方式.png


②:修改 redis.conf 文件,修改前先备份,执行 cp redis.conf bak_redis.conf

Redis 持久化 RDB方式.png


查看默认启用的 RDB 文件

Redis 持久化 RDB方式.png


③:编辑 redis.conf 增加 save 配置,修改文件名等。

        vim redis.conf

Redis 持久化 RDB方式.png


修改的内容:

Redis 持久化 RDB方式.png


Redis 持久化 RDB方式.png


把原来的默认的 dump.rdb 删除,修改 redis.conf 后,重新启动 redis

④:在 20 秒内容,修改三个 key 的值

Redis 持久化 RDB方式.png


⑤:查看生成的 rdb 文件

Redis 持久化 RDB方式.png


四、总结


优点:由于存储的是数据快照文件,恢复数据很方便,也比较快

缺点:

1)会丢失最后一次快照以后更改的数据。如果你的应用能容忍一定数据的丢失,那么

使用 rdb 是不错的选择;如果你不能容忍一定数据的丢失,使用 rdb 就不是一个很好的选择。

2)由于需要经常操作磁盘,RDB 会分出一个子进程。如果你的 redis 数据库很大的话,

子进程占用比较多的时间,并且可能会影响 Redis 暂停服务一段时间(millisecond 级别),

如果你的数据库超级大并且你的服务器 CPU 比较弱,有可能是会达到一秒。