美文网首页
Redis RDB持久化

Redis RDB持久化

作者: 一如既往wfqwfq | 来源:发表于2019-10-25 15:29 被阅读0次

1、什么是RDB

RDB(redis database)是redis默认的持久化方案。在指定的时间内,执行了指定的次数的写操作(或者超过指定时间执行了指定的操作次数),则将内存中的数据写入磁盘,作持久化存储。在指定目录下生成dump.rdb文件,redis重启后可通过加载dump.rdb文件恢复数据。

2、RDB持久化触发方式

1.save命令

save命令触发RDB持久化是一个同步阻塞的过程。在执行save指令期间,redis不能处理其他请求,直到持久化完成。

2.bgsave命令

bgsave命令触发RDB持久化是一个异步的过程。它会fork出一个子进程来做持久化操作,完成后自动结束。redis只有在fork期间会发生阻塞,其他时间仍然可以正常处理请求。

3.shutdown命令

shutdown命令能触发持久化。

4.flushall命令

flushall命令能触发持久化,但是没有什么意义。

5.自动化配置

查看标题4

3、RDB持久化原理

RDB持久化是redis进程fork出一个子进程,该子进程拷贝一份原有的dump.rdb文件,将要持久化的数据集写入临时文件中,最后用临时文件将原有的dump.rdb文件覆盖。

image.png

4、RDB自动触发配置

打开redis.conf配置文件,找到快照(SNAPSHOTTING)部分。核心配置

save ""    不需要持久化操作
save 900 1  每900秒内至少有1个key被改变
save 300 10  每300秒内至少有10个key被改变
save 60 10000  每60秒内至少有10000个key被改变
image.png
解释一下 save <seconds> <changes>配置的含义。
它指在指定的时间内,执行了多少次更新操作,就会触发RDB持久化操作。
例子:save 100 10
在100秒内,如果redis执行了10次更新操作,就触发一次RDB持久化操作。如果超过了100秒了,redis执行更新操作次数小于10,则不会触发RDB持久化操作。但是当从上次持久化操作后redis只要执行更新操作大于等于10次就会触发RDB持久化,不管时间是否到100秒或者超过100秒。(50秒时,redis一共执行了10次更新操作,触发RDB持久化。)(100秒时,redis一共执行了9次更新操作,105秒时,redis做了一次更新操作,则在105秒时触发RDB持久化)

在SNAPSHOTTING模块中还有下面三个配置

默认值为yes。当启用了RDB且最后一次后台保存数据失败,Redis是否停止接收数据。
stop-writes-on-bgsave-error 

存储至本地数据库时(持久化到rdb文件)是否压缩数据,默认为yes
rdbcompression yes

本地持久化数据库文件名,默认值为dump.rdb
dbfilename dump.rdb

持久化文件存储的路径
dir ./
image.png

5、数据恢复

将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可,redis就会自动加载文件数据至内存了。Redis 服务器在载入 RDB 文件期间,会一直处于阻塞状态,直到载入工作完成为止。

6、RDB的优缺点

优点:

  • 生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。
  • RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

缺点:

  • RDB方式数据没办法做到实时持久化/秒级持久化。因为bgsave每次运行都要执行fork操作创建子进程,属于重量级操作(内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑),频繁执行成本过高(影响性能)
  • 在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)

相关文章

  • Redis缓存持久化策略

    Redis RDB持久化原理 简介:rdb持久化方案配置讲解,redis的开发者是怎么实现rdb的 rdb持久化配...

  • Redis持久化

    Redis持久化方式有两种:RDB和AOF。 1 RDB持久化 RDB(Redis Database)持久化是把当...

  • redis-2

    redis-2 redis的持久化 Redis 提供了 RDB 和 AOF 两种持久化方式。 RDB RDB 是把...

  • 03-redis持久化

    Redis持久化 两种方式持久化: RDB持久化 - 全量 AOF持久化 - 增量 RDB持久化 RDB文件的生成...

  • Redis的持久化方式:RDB和AOF

    一,redis的持久化方式:RDB和AOF RDB,即Redis Database RDB持久化方式:在指定的时间...

  • 「高频面试题」Redis的持久化方式有哪些?

    RDB RDB(Redis DataBase)持久化是把当前Redis中全部数据生成快照保存在硬盘上。RDB持久化...

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

  • 2020-02-21 记录redis(8)

    redis持久化,两种持久化方式: RDB方式 AOF方式 持久化的使用方式: RDB 优势: 1、redis的数...

  • Redis-分布式缓存(一)

    零、本文纲要 一、单机Redis的问题二、Redis持久化(一)RDB持久化(二)AOF持久化(三)RDB与AOF...

  • Redis 持久化

    Redis 持久化 RDB RDB 持久化方式类似于快照,执行 SAVE BGSAVE命令时可以触发 RDB 持久...

网友评论

      本文标题:Redis RDB持久化

      本文链接:https://www.haomeiwen.com/subject/pemsvctx.html