`
woodding2008
  • 浏览: 289694 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Redis RDB持久化

 
阅读更多

 

      redis是内存数据库,它将自己的数据库状态存储在内存里面,所以如果不想办法将存储在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,表面数据意外丢失。RDB持久化功能所生成的RDB文件时一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。

 

RDB文件的创建与载入

     有两个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE。

     SAVE命令会阻塞Redis服务器进程,知道RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令个请求。和SAVE命令直接阻塞服务器进程的做法不同,BGSAVE命令会派生出一个子进程,然后由子进程负责创建RDB文件,服务器进程(父进程)继续处理命令请求。

SAVE
BGSAVE

      因为BGSAVE命令的保存工作是由子进程执行的,所以在子进程创建RDB文件的过程中,Redis服务器仍然可以处理客户端的命令请求,但是在BGSAVE命令执行期间,服务器处理SAVE、BGSAVE、GBREWRITEAOF三个命令会和平时有所不同。

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

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

      最后,BGRWRITEAOF和BGSAVE两个命令不能同时执行:

  • 如果BGSAVE命令正在执行,那么客户端发送的BGREWRITEAOF命令会被延迟到BGSAVE命令执行完毕之后执行。
  • 如果BGREWRITEAOF命令正在执行,那么客户端发送的BGSAVE命令会被服务器拒绝。

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

分享到:
评论

相关推荐

    Redis RDB持久化.flv

    Redis RDB持久化.flv

    Redis的持久化方案

    在进行RDB持久化时,Redis创建一个子进程来处理快照的保存,而父进程依然可以继续处理请求,这使得RDB的性能影响较小。同时,RDB文件是一个紧凑的压缩文件,适合于远程复制和灾难恢复,也便于传输到远程数据中心或...

    Redis 持久化之RDB和AOF.doc

    Redis 持久化是确保数据安全的重要机制,它提供了两种主要的方法:RDB(Redis Database)和 AOF(Append Only File)。RDB 是一种快照式的持久化方式,而 AOF 则记录每次写操作的日志。 RDB 持久化在特定条件下将...

    redis持久化方式

    为了保证数据的安全性和持久性,Redis 提供了两种主要的持久化机制:RDB 快照(Redis Database Backup)和 AOF(Append Only File)。本文将详细介绍这两种持久化方式的原理、配置方法及其各自的优缺点。 #### RDB ...

    Redis windows 测试redis持久化功能1

    接下来,我们关注 Redis 的持久化功能,主要有两种方式:RDB(Redis Database Backup)和 AOF(Append Only File)。 1. RDB 持久化:这是一种定期快照的方式,通过 `save` 配置项来定义触发保存的条件。例如: ``...

    RDB 持久化.pdf

    总的来说,RDB持久化是Redis中非常重要的功能,它通过定期或条件触发创建数据快照来保存数据,以确保在服务器重启或数据丢失后能够快速恢复。RDB的实现方式主要通过SAVE和BGSAVE命令,以及配置文件中的自动保存机制...

    redis 可持久化 Key-Value数据库

    Redis的持久化机制主要有两种方式:RDB(Redis Database Backup)和AOF(Append Only File)。RDB是在特定时间点对数据库进行快照保存,生成一个纯二进制文件,这种方式持久化效率高,恢复速度快,但可能会丢失最近...

    redis-rdb-tools-master的安装与简单使用.zip

    为了方便管理和维护Redis的数据,开发者设计了一系列的工具,其中`redis-rdb-tools`是一个专门用于分析Redis的RDB(持久化文件)的工具集。RDB是Redis默认的持久化方式之一,它会定期将内存中的数据快照保存到磁盘上...

    RDB持久化机制: - RDB默认开启 - RDB存储二进制数据

    - RDB持久化机制: - RDB默认开启 - RDB存储二进制数据,RDB在持久化和读取持久化文件时,速度较快 - RDB持久化的时机: save second keys # 在second时间内,执行了key次写操作,就执行RDB的持久化 - 优缺点...

    解密Redis持久化

    本文将深入解析Redis的持久化机制,主要包括RDB快照和AOF日志。 首先,理解数据持久化的概念至关重要。简单来说,持久化就是将内存中的数据保存到非易失性存储设备,如硬盘,以便在系统重启后仍能访问这些数据。在...

    06_redis 持久化.pdf

    RDB持久化的过程关注的是数据快照,即在某个时间点将内存中的所有数据保存到磁盘上。RDB方式通过执行save命令或bgsave命令来创建快照。其中,save命令会阻塞Redis服务器,直到RDB过程完成,因此在生产环境中一般不...

    Redis持久化锦囊在手,再也不会担心数据丢失了(csdn)————程序.pdf

    本文主要介绍了 Redis 的两种持久化机制:RDB(Redis Database Backup file)和 AOF(Append Only File),重点讲解了 RDB 的工作原理与实现。 RDB 是 Redis 数据库的一种快照备份,它将当前内存中的数据库状态保存...

    02-Redis持久化、主从与哨兵架构详解.zip

    Redis提供了两种主要的持久化方式:RDB(Redis Database Backup)和AOF(Append Only File)。RDB是通过定时全量备份的方式保存数据,它在特定时间点生成一个数据库的快照,生成的文件体积小,恢复速度快,适合灾难...

    04_redis 数据持久化 和 lamp 环境搭建.docx

    - **性能影响**:RDB持久化对于Redis的性能影响较小,因为它通常在后台异步执行;而AOF持久化可能会对Redis的性能产生一定影响,尤其是当选择更频繁的同步策略时。 ### LAMP 环境搭建 LAMP是指Linux、Apache、...

    数据不丢失:Redis RDB与AOF持久化深度解析

    2. **持久化**:尽管 Redis 是一个内存数据库,但它提供了持久化机制,可以将内存中的数据保存到磁盘,防止数据丢失。 3. **支持事务**:Redis 支持简单的事务功能,可以保证操作的原子性。 4. **丰富的数据类型**:...

    Redis的持久化方案.pdf(两种持久化方案:RDB 和 AOF,共15页)

    2. **性能影响**: 在大数据集的情况下,执行RDB持久化操作需要调用fork()函数来创建子进程,这可能会导致Redis暂时无法响应客户端请求,特别是在CPU性能不足的情况下。 #### AOF 持久化方案 **概述** AOF方式记录...

    redis的持久化工具

    Redis提供了多种持久化策略,包括RDB(快照)和AOF(Append Only File)。RDB会在指定时间间隔或者满足特定条件时生成数据的全量快照,而AOF则是记录每次写操作的日志,以追加的方式保存到文件中。 Jedis虽然支持...

    Redis持久化机制思维导图完整版

    RDB持久化RDB(Redis DataBase)持久化是一种基于快照的持久化方式。在指定的时间间隔内,如果满足一定条件(如某段时间内发生的写操作次数),Redis会生成一个包含当前内存数据的RDB文件。这个RDB文件可以用于数据...

    Redis持久化、主从与哨兵架构详解(1)

    RDB快照是Redis默认的持久化方式,它将内存数据库快照保存在名字为dump.rdb的二进制文件中。用户可以设置Redis在满足一定条件时自动保存数据集,例如在60秒内有至少1000个键被改动时自动保存一次数据集。 RDB快照有...

Global site tag (gtag.js) - Google Analytics