Redis持久化之RDB

我就是我 2022-12-17 11:57 267阅读 0赞

目录

一、原理:

二、触发机制

三、如何恢复

四、如何启用

五、总结


本篇着重记录下Redis下的持久化RDB(Redis Database)。


一、原理:

我们通俗的说法就是快照,即在某个时刻,按下快门,将数据记录下来,然后要恢复时直接拿着快照进行恢复就行。

其持久化快照保存过程如下图:


watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70

关键就是搞懂,在进行快照的过程中,redis的主进程会fork一个子进程出来,由子进程进行临时rdb文件的写入,从而不影响父进行的操作,因此,RDB相比于AOF的性能更高。

但机制本身决定了其的缺点,在断电时,会失去上次快照之后到断电时这个过程的数据,因此就要根据实际,去设置触发机制的参数了。


二、触发机制

那么RDB在什么情况下会触发快照呢?

RDB中save(即产生新的.rdb)文件的触发规则,只要下面3中规则满足,都会触发:

  1. 1、满足了.conf中配置的save规则(例如60秒修改了10key
  2. 2、执行flushdb flushall命令
  3. 3、退出redis

满足以上任意一种条件后,就会生成dump.rdb文件


三、如何恢复

生成的dump.rdb文件会在什么情况下恢复,又是如何恢复的?

  1. 只要在redis的启动目录下存在dump.rdb文件,redis在启动时就会自己读取rdb文件

因而,redis的RDB持久化的恢复是自动化的,基本上不用我们去处理什么。


四、如何启用

redis的默认持久化方式就是RDB方式,在其执行目录下,可以看到redis.conf配置文件,

(windows系统下可能只有redis.windows-service.conf和redis.windows.conf,只需要将其中一个进行配置项加载即可)

  1. window下要用命令指定配置文件:
  2. redis-server.exe redis.windows.conf

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l5ajEwODMxNw_size_16_color_FFFFFF_t_70 1

如上图所示,其有默认保存机制,15分钟至少修改一个key;5分钟修改10个key;1恩中修改10000个key。

实际中,如果对业务的实时性要求较高,我们也可以加自己的业务规则,

例如10秒修改一次key,我们可以写:

  1. save 10 1

另外还有一点配置要说明:rdb方式:默认开启数据压缩

  1. rdbcompression yes

解说:配置存储至本地数据库时是否压缩数据,默认为yes。Redis采用LZF压缩方式,但占用了一点CPU的时间。若关闭该选项,但会导致数据库文件变的巨大。建议开启。

五、总结

优点:

  1. 适合大规模的数据恢复。
  2. 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。

缺点:

  1. 最后一次的数据会丢失。
  2. 需要单独fork子进程,对内存要求高

所以在生成环境,我们可以定期对dump.rdb文件进行备份,用来处理突发的恢复数据的要求。

发表评论

表情:
评论列表 (有 0 条评论,267人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Redis持久机制RDB

    1. 什么是RDB? RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,重启Re

    相关 Redis持久RDB

    Redis持久化之RDB 由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容

    相关 Redis持久RDB

    原文链接:[点击打开链接][Link 1] RDB[¶][Link 2] 在运行情况下, Redis 以数据结构的形式将数据维持在内存中, 为了让这些

    相关 Redis 持久 RDB

    面试指导 > 面试官问你,什么是 Redis 持久化 ? 当遇到这种,问题,你可不要答什么硬盘存储啊什么的。面试官不是要的这种答案。 他们想听到的只有两个:

    相关 Redis 数据持久 RDB

    我们知道 Redis 是内存数据库,它将自己的数据存储在内存中,如果它不想办法将数据存入磁盘中,那么当服务器进程退出或意外宕掉的时候,服务器中的数据也会消失。 为了解决这个问

    相关 redis——持久RDB、AOF

    一  概述 目前持久化的方式有两种:快照;写日志 快照是把数据备份;写日志则是把操作过程记录下来,当我们需要恢复数据时,我们就把当时的操作重新执行一遍 AOF就