系统城装机大师 - 固镇县祥瑞电脑科技销售部宣传站!

当前位置:首页 > 系统教程 > 其它教程 > 详细页面

Redis的RDB持久化教程

时间:2020-08-20来源:www.pcxitongcheng.com作者:电脑系统城

Redis是内存数据库,为了保证数据不在故障后丢失,Redis需要将数据持久化到硬盘上。
Redis持久化有两种方式:一种是快照,全量备份。一种是AOF方式,连续增量方式。

RDB

RDB持久化就是把数据生成快照保存到硬盘的过程。每N分钟数据发送了M次写操作之后,从内存dump数据形成rdb文件,压缩后放在备份目录

工作原理

Redis-Server主进程会Fork一个子进程在后台生成RDB文件,主进程可以在不阻塞线程情况下接收其他命令。在主进程Fork过程中会产生阻塞,Fork完成后不在阻塞主进程,持久化工作交给子进程,子进程会生成一个临时的快照文件,完成后会对原有文件进行替换。

RDB原理

保存时间点配置

在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} 动态修改是否添加校验码

手动触发命令

1.save命令
save命令会使用阻塞主进程的方式生成RDB文件,这意味着生成RDB文件过程中其他命令将阻塞等待RDB文件生成完成。所以不建议在生产环境使用。

> save
OK

2.bgsave和lastsave命令
bgsave命令会使用和自动触发生成RDB文件一样,在后台fork()一个子进程生成RDB文件。可以通过lastsave命令查看是否成功。

> bgsave
Background saving started
> lastsave
(integer) 1565190498

优缺点

优点
1.保存了某个时间点的快照数据,适合做灾备
2.RDB的启动速度比AOF快
缺点
1.没办法做到实时持久化,在保存时间点未到达时故障,容易丢掉最新数据
2.fork操作会在创建子进程期间阻塞主进程

结语

本人深知水平有限,欢迎指正本文错误之处。

分享到:

相关信息

  • ThinkPad蓝牙鼠标如何配对

    ThinkPad蓝牙鼠标如何配对解答步骤41U5008鼠标驱动官网地址: https://support.lenovo.com/en_US/downloads/detail.page?&LegacyDocID=MIGR-67201 第一种方式是比较传统的:使...

    2024-04-11

  • USB接口无法识别设备的解决方法

    故障现象: USB设备U盘、移动硬盘等插入后提示无法识别的设备,确认设备本身正常,设备可加电,或插入设备后加电但无任何反应,无法使用。新型号机器多表现为黄色USB接口存在此问题,...

    2024-04-11

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载