一文了解:Redis的RDB持久化
一文了解:Redis的RDB持久化
Redis是内存数据库,为了保证数据不在故障后丢失,Redis需要将数据持久化到硬盘上。
Redis持久化有两种方式:一种是快照,全量备份。一种是AOF方式,连续增量方式。
RDB
RDB持久化就是把数据生成快照保存到硬盘的过程。每N分钟数据发送了M次写操作之后,从内存dump数据形成rdb文件,压缩后放在备份目录
工作原理
Redis-Server主进程会Fork一个子进程在后台生成RDB文件,主进程可以在不阻塞线程情况下接收其他命令。在主进程Fork过程中会产生阻塞,Fork完成后不在阻塞主进程,持久化工作交给子进程,子进程会生成一个临时的快照文件,完成后会对原有文件进行替换。

保存时间点配置
在redis.conf文件中可以设置每N秒之后M个Key发生了写操作就保存快照。
格式为:save <seconds> <changes>
save 900 1 # 900秒之后至少有1个Key发生写操作
save 300 10 # 300秒之后至少有10个Key发生写操作
save 60 10000 # 60秒之后至少有10000个Key发生写操作
先检查60秒之内是否有1000个写操作,再检查300秒之后是否有10个写操作,最后检查900秒之后是否有1个写操作。

如果想要禁用RDB功能可以注释掉所有的save配置,也可以将save配置改为save ""
文件
RDB文件保存在dir配置的指定目录下,默认为redis-server启动目录,RDB文件文件名为dbfilename配置,默认为dump.rdb文件名,我们可以更改dir和dbfilename配置修改文件保存的路径和文件名。
dir ./
dbfilename dump.rdb
通过config set dir {newDir} 动态修改dir配置
> config set dir /Users/JAVA/Redis/RDB
OK
通过config set dbfilename {newDbfilename} 动态修改RDB文件名称
> config set dbfilename backup.rdb
OK
压缩
RDB文件默认以LZF算法压缩保存,rdbcompression配置默认为yes,当改为no时表示不压缩。
rdbcompression yes
通过config set rdbcompression {yes|no} 动态修改是否压缩
错误处理
当快照过程中发生错误可以通过stop-writes-on-bgsave-error配置禁止Redis再写入数据,默认为yes开启。
stop-writes-on-bgsave-error yes
通过config set stop-writes-on-bgsave-error {yes|no} 动态修改是否开启RDB文件快照过程出错时禁止写入数据到Redis
检验
在版本5中,为了保证RDB文件的完整性会在文件末尾加入一个CRC64的校验码。通过rdbchecksum配置是否开启,如果配置为no则使用0代替CRC64校验码,加载RDB文件时会跳过校验。
rdbchecksum yes
通过config set rdbchecksum {yes|no} 动态修改是否添加校验码
手动触发命令
save命令
save命令会使用阻塞主进程的方式生成RDB文件,这意味着生成RDB文件过程中其他命令将阻塞等待RDB文件生成完成。所以不建议在生产环境使用。
> save
OK
bgsave和lastsave命令
bgsave命令会使用和自动触发生成RDB文件一样,在后台fork()一个子进程生成RDB文件。可以通过lastsave命令查看是否成功。
> bgsave
Background saving started
> lastsave
(integer) 1565190498
优缺点
优点
- 保存了某个时间点的快照数据,适合做灾备
- RDB的启动速度比AOF快
缺点
- 没办法做到实时持久化,在保存时间点未到达时故障,容易丢掉最新数据
- fork操作会在创建子进程期间阻塞主进程
结语
本人深知水平有限,欢迎指正本文错误之处。
欢迎关注我的微信公众号:bate喵
一文了解:Redis的RDB持久化的更多相关文章
- redis之RDB持久化与AOF持久化
Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,为了方便起见,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态. 因为Red ...
- 看完这篇还不懂Redis的RDB持久化,你们来打我!
一.为什么需要持久化 redis里有10gb数据,突然停电或者意外宕机了,再启动的时候10gb都没了?!所以需要持久化,宕机后再通过持久化文件将数据恢复. 二.优缺点 1.rdb文件 rdb文件都是二 ...
- Redis使用RDB持久化和AOF持久化的区别 - 小白之所见
- Redis详解(六)------ RDB 持久化
前面我们说过,Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,has ...
- Redis 详解 (六) RDB 持久化
目录 1.RDB 简介 2.触发方式 ①.自动触发 ②.手动触发 3.恢复数据 4.停止 RDB 持久化 5.RDB 的优势和劣势 6.RDB 自动保存的原理 前面我们说过,Redis 相对于 Me ...
- mysql主从复制、redis基础、持久化和主从复制
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
- 第10章 RDB持久化
Redis是一种内存数据库,掉电即失,为了解决这个问题Redis提供了RDB持久化功能,该功能可以把Redis中的内容以RDB文件的形式存储在硬盘上,并且每次RedisServer启动的时候都会尝试从 ...
- Redis基础与持久化
Redis介绍 软件说明 Redis是一款开源的,ANSI C语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品. Redis采用内存(In-Memory)数据集(Dat ...
- [翻译自官方]什么是RDB和AOF? 一文了解Redis持久化!
概述 本文提供Redis持久化技术说明, 建议所有Redis用户阅读. 如果您想更深入了解Redis持久性原理机制和底层持久性保证, 请参考文章 揭秘Redis持久化: http://antire ...
随机推荐
- 浅谈Linq查询
一.Var关键字 在学习Linq查询之前,我们先来学习var关键字的用法,看看微软官方的定义:从Visual C#3.0开始,在方法范围声明的变量可以具有隐式“类型” var.隐式类型的局部变量是强类 ...
- HDU 3949:XOR(高斯消元+线性基)
题目链接 题意 给出n个数,问这些数的某些数xor后第k小的是谁. 思路 高斯消元求线性基. 学习地址 把每个数都拆成二进制,然后进行高斯消元,如果这个数字这一位(列)有1,那么让其他数都去异或它,消 ...
- HDU 5113:Black And White(DFS)
题目链接 题意 给出一个n*m的图,现在有k种颜色让你对这个图每个格子染色,每种颜色最多可以使用col[i]次,问是否存在一种染色方案使得相邻格子的颜色不同. 思路 以为是构造题,结果是爆搜.对于每一 ...
- Django项目的创建和管理
1.主题 这部分教程主要介绍如何通过Pycharm创建.管理.运行一个Django工程.对于Django模块的相关知识大家可以参考Python社区. 2.准备环境 Django版本为2.0或更高 Py ...
- 生产Server遭挖矿程序入侵,暴力占用CPU
区块链的火热,利益驱使必然导致不少PC或Server,被变成肉鸡,执行挖矿程序进行挖矿,进而导致我们正常的程序无法正常. (Centos7 Server)使用top命令查看服务器进程运行情况,发现几个 ...
- (转)代码结构中Dao,Service,Controller,Util,Model是什么意思?
作者:技能树IT修真院链接:https://www.zhihu.com/question/58410621/answer/623496434来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商 ...
- ES6中的解构
数组中的解构: 输出 : 白板 幺鸡 二条 对象的解构: 输出: 老王 12 数组的结构用[];对象的解构用{}:一定要区分它是数组还是解构. 区分方法:看 它是在赋值还是在拿值,等号左边,都为解构, ...
- STM32F0_HAL库驱动描述——LL驱动程序概述
LL驱动概述 低层(LL)驱动器旨在提供快速轻量级的专家导向层,它比硬件更接近硬件: 与HAL相反,LLAPI不适用于优化访问不是关键功能的外设设备,或者需要大量软件配置和/或复杂的高级堆栈(如USB ...
- 【DFS练习】Pku1950 Dessert-C++
这道题和这道题很类似. 这里还是说一下坑点,因为前一道题'等式'的加数只有9个,但是这道题目最大到了15,所以在选择不加符号的时候需要判断是用100去乘还是用10去乘就可以了. 基本代码稍微把相关的9 ...
- 5G VS WiFi6,实力大比拼!
移动通信与WiFi,就像移动设备上的两大高手.彼此势均力敌:一个主室内,一个主室外.WiFi是移动网络的室内覆盖补充,也承担着大量的数据流量卸载,二者既想各自占山为王,但也时不时地相互成全对方. 然而 ...