Redis RDB持久化

作者: 于情于你 | 来源:发表于2020-07-27 13:41 被阅读0次

RDB可以将Redis在内存中的数据库状态保存到磁盘里面,避免意外数据丢失。

生成RDB文件命令

SAVE(阻塞) BGSAVE (非阻塞,子进程处理)

载入RDB文件

    RDB文件的载入工作是在服务器启动时自动执行的,所以Redis并没有专门用于载入RDB文件的命令。
    另外值得一提的是,因为AOF文件的更新频率通常比 RDB文件的更新频率高,所以∶
    如果服务器开启了AOF持久化功能,那么服务器会优先使用AOF文件来还原数据
库状态。
    只有在AOF持久化功能处于关闭状态时,服务器才会使用RDB文件来还原数据库状态。

save命令执行时的数据库状态

    当SAVE命令执行时,Redis服务器会被阻塞,所以当SAVE命令正在执行时,客户端发送的所有命令请求都会被拒绝。
    只有在服务器执行完SAVE命令、重新开始接受命令请求之后,客户端发送的命令才会被处理。

BGSAVE 命令执行时的服务器状态

    首先,在BGSAVE命令执行期间,客户端发送的SAVE命令会被服务器拒绝,服务器禁止SAVE命令和BGSAVE命令同时执行是为了避免父进程(服务器进程)和子进程同时执行两个 rdbSave 调用,防止产生竞争条件。

    其次,在 BGSAVE命令执行期间,客户端发送的BGSAVE命令会被服务器拒绝,因为同时执行两个BGSAVE命令也会产生竞争条件。

    最后,BGREWRITEAOF和BGSAVE两个命令不能同时执行∶
    如果BGSAVE命令正在执行,那么客户端发送的BGREWRITEAOF命令会被延迟到
BGSAVE命令执行完毕之后执行。
    如果BGREWRITEAOF命令正在执行,那么客户端发送的BGSAVE命令会被服务器
拒绝。

    因为BGREWRITEAOF和BGSAVE两个命令的实际工作都由子进程执行,所以这两个命令在操作方面并没有什么冲突的地方,不能同时执行它们只是一个性能方面的考虑——并发出两个子进程,并且这两个子进程都同时执行大量的磁盘写人操作,这怎么想都不会是一个好主意。

RDB文件载入时的服务器状态

服务器在载入RDB文件期间,会一直处于阻塞状态,直到载入工作完成为止。

相关文章

  • 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/bvuclktx.html