美文网首页
Redis 数据持久化之RDB

Redis 数据持久化之RDB

作者: 茧铭 | 来源:发表于2019-07-28 00:09 被阅读0次

RDB持久化原理

       Redis是一个键值对形式存储的nosql数据库服务器,它的数据都储存在内存里面。但是如果数据没有持久化存储,一旦服务器进程退出了,服务器的数据也会丢失。为了解决这一问题,Redis提供了RDB和AOF数据持久化的功能。
       RDB的原理是每间隔一段时间,就“fork”一份与原来进程内容一致的新的进程。这个新的进程的所有数据(变量、环境变量等)内容都与原进程一致,并作为原进程的子进程工作。这个新的进程会把数据快照先写入到一份临时文件中,在这个过程完成后再将这个临时文件替换到磁盘中的存储文件中。

配置文件

下面是相关配置信息的注解

################################ SNAPSHOTTING(快照)################################
## save 是指定执行rdb储存的条件, save time numer
# 下面的语句既是 15分钟保存了一次,执行rdb持久化
# 如果5分钟内有10个key的内容被修改,那么执行rdb持久化一次
# 如果一分钟内容redis更改了10000次数据,也会执行一次rdb持久化

## 如果要禁用RDB,不配置任何save或者写一个save "" 空字符串即可
save 900 1
save 300 10
save 60 10000

# 该配置默认是yes,见名思意即是在bgsave过程中如果出现了问题,
# 那么就会中断,后面的数据也就不再持久化了
stop-writes-on-bgsave-error no

# 当导出到 .rdb 数据库时是否用LZF压缩字符串对象。
# 默认设置为 "yes",所以几乎总是生效的。
# 如果你想节省CPU的话你可以把这个设置为 "no",但是如果你有可压缩的key的话,那数据文件就会更大了。
rdbcompression yes

# 对rdb数据进行校验,耗费CPU资源,默认为yes
rdbchecksum yes

# 数据文件的名字,可自定义
dbfilename dump.rdb

# 数据文件存储的地方,默认是 ./  代表会在启动redis的当前路径下执行持久化并存放dump.rdb文件
dir ./

从上面的配置可以看出,redis在数据更改频次满足条件时会自动持久化数据,并在对应路径下

即在满足触发rdb的条件时,会自动储存一个dump.rdb的文件作为持久化文件。当redis重新启动变会先阻塞进程加载这个文件。
除此之外,还有别的方式可以去触发rdb持久化存储,即使用手动使用save和bgsave命令存储数据。从下面两张图可以看出来,在执行save命令之前,只存储了一个数据,并不满足15分钟更改一个数据的条件。但是我执行了save命令之后,会直接执行一次持久化存储。

save命令和bgsave的区别是save会阻塞当前进程,Redis不会接收客户端传来的执行指令。bgsave的话Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间。
除了手动save和bgsave之外,执行flush all 情况所有数据,也会执行一次快照,这也是为什么清空数据后,shoudown进程之后,再重启数据不会丢失了。



其他

1、对RDB的解释,也说明了这种快照持久化的方式会将原进程完整地复制一次,随着数据量的增加,这种方式消耗的时间会越来越久。
2、RDB可能会因为突发原因丢失最后一次快照信息,因此仅在数据精度要求不高的情况下才使用这种持久化方式。
3、数据文件dump.rdb的备份,应该备份在多台机器上。如果一台服务器出现了问题,要使用备份恢复数据,可以直接复制一份到对应文件路径即可。

相关文章

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

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

  • Redis 的设计原理

    Redis 持久化之RDB和AOFRedis 有两种持久化方案,RDB (Redis DataBase)和 AOF...

  • Redis的持久化方案

    首先redis有两种持久化方案:RDB和AOF: 一、RDB RDB持久化配置 Redis会将数据集的快照dump...

  • Redis持久化

    Redis持久化分为RDB持久化和AOF持久化 RDB RDB文件用于保存和恢复Redis服务器所有数据库的全部键...

  • Redis-持久化

    Redis-持久化 一、RDB持久化 为了解决服务器进程退出导致数据丢失,Redis提过了RDB持久化功能,可以将...

  • Redis深度历险-AOF持久化

    Redis深度历险-AOF持久化 Redis提供两种持久化方式AOF和RDB,RDB是快照形式持久化全量数据、AO...

  • redis 持久化 - RDB 和 AOF

    redis持久化 RDB RDB持久化功能,可以将Redis在内存中的数据库状态保存到磁盘中,避免数据意外丢失. ...

  • redis相关问题

    redis持久化的意义:在于故障恢复RDB和AOF两种持久化机制的介绍 RDB持久化机制:对redis中的数据执行...

  • Redis持久化和高可用

    Redis持久化 Redis持久化的机制有两种:RDB、AOF。 含义优点缺点RDB对Redis中的数据执行周期性...

  • Redis持久化之RDB

    Redis持久化之RDB RDB (快照)持久化:保存某个时间点的全量数据快照。 在配置文件中进行配置 以save...

网友评论

      本文标题:Redis 数据持久化之RDB

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