redis的RDB持久化详解

前言:

Redis 是内存数据库,它将自己的数据库状态储存在内存里面,所以如果不想办法将储存在内存中的数据库状态保存到磁盘里面,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见

为了解决这个问题,Redis提供了RDB持久化功能,这个功能可以将Redis 在内存中的数据库状态保存到磁盘里面,避免数据意外丢失。

概述:

RDB持久化: 默认 Redis 是会以快照 “RDB” 的形式将数据持久化到磁盘的,一个二进 制文件,dump.rdb

快照:直接把内存中的数据保存到一个 dump 文件中,定时保存,保存策略

redis的RDB持久化既可以手动执行,也可以根据服务器配置选项定期执行,该功能可以将某个时间点上的数据库状态保存到一个RDB文件中,也就是说在服务器开起时的目录中会创建一个dump.rdb文件,当你创建表和数据之后,会在一定的时间后,自动保存到dump.rdb文件中,自动保存到磁盘中,也就是落盘。

这样就解决了服务器突然出现宕机,或者意外退出引起数据丢失的问题

命令:

RDB系统默认是打开的,当Redis服务器启动时,用户可以通过指定配置文件或者传人启动参数的方式设置save选项,如果用户没有主动设置save选项,那么服务器会为save选项设置默认条件,当满足以下三种的任意一个条件会自动生成dump.rdb文件;

save 900 1  //每900秒有1个KEY被修改
save 300 10  //每300秒有10个KEY被修改
save 60 10000  //每60秒有10000个KEY被修改

有两种命令可以实现落盘,用于生成RDB文件

  1、SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求

127.0.0.1:6379> SAVE  //等待直到RDB 文件创建完毕
OK

 2、shutdown 直接退出服务,会自动生成RDB文件,然后再次开启时,会自动加载磁盘中的数

127.0.0.1:6379> shutdown  //关闭服务

 RDB持久化的优势:

1、RDB是一个非常紧凑的文件,它保存了某个时间点得数据集,非常适用于数据集的备份。

2、RDB是一个紧凑的单一文件,很方便传送到另一个远端数据中心,非常适用于灾难恢复.。

3、与AOF相比,在恢复大的数据集的时候,RDB方式会更快一些.。

RDB持久化的缺点:

           1、如果你希望在redis意外停止工作(例如电源中断)的情况下丢失的数据最少的话,那么RDB不适合你.虽然你可以配置不同的save时间点(例如每隔5分钟并且对数据集有100个写的操作),是Redis要完整的保存整个数据集是一个比较繁重的工作,你通常会每隔5分钟或者更久做一次完整的保存, 在这种情况下, 一旦发生故障停机, 你就可能会丢失好几分钟的数据

            2、如果文件特别大,可能会导致客户端提供服务暂停数毫秒或者几秒。

总结:

          1、RDB存储是默认的存储方式,小数量,不在乎是否有并发,数据是否会丢失,安全性最好,占用的空间也最小。

          2. 以上均为个人观点及工作学习中的总结。觉得还可以的话,麻烦给个关注评论,谢谢各位伙伴们啦!

 

猜你喜欢

转载自blog.csdn.net/qq_44776691/article/details/88685964