千家信息网

Redis持久化RDB有什么用

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章给大家分享的是有关Redis持久化RDB有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Redis 持久化一 、RDB作用:在指定的时间间隔内将内存中的数据集
千家信息网最后更新 2024年11月11日Redis持久化RDB有什么用

这篇文章给大家分享的是有关Redis持久化RDB有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

Redis 持久化

一 、RDB

作用:在指定的时间间隔内将内存中的数据集快照写入磁盘,即Snapshot快照.它恢复时将快照文件直接读到内存中

原理:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到
一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

缺点:有可能丢失最后一次的保存

Fork: fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程

文件:Rdb保存的是dump.rdb文件

配置:SNAPSHOTTING快照

格式:save -> save 秒钟 写操作次数

默认:默认触发条件

15分钟(900秒) 改1次

5分钟(300秒)改10次

1分钟(60 秒)改10000次

禁用:不设置 或者 save ""

二、案例

设置 save 120 10 (120秒改10次)

1.删除备份文件

[root@VM_0_7_centos ~]# cd /usr/local/bin[root@VM_0_7_centos bin]# lltotal 37820-rw-r--r-- 1 root root     231 Jun 19 18:35 dump.rdb-rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb-rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-clilrwxrwxrwx 1 root root      12 Jun 12 23:09 redis-sentinel -> redis-server-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server-rwxr-xr-x 1 root root    9840 Jun 12 22:55 tclsh8.6[root@VM_0_7_centos bin]# rm -f dump.drb

2.启动redis服务
3.设置值

127.0.0.1:9736> set k1 v1OK127.0.0.1:9736> set k2 v2OK127.0.0.1:9736> set k3 v3OK127.0.0.1:9736> set k4 v4OK127.0.0.1:9736> set k5 v5OK127.0.0.1:9736> set k6 v6OK127.0.0.1:9736> set k7 v7 OK127.0.0.1:9736> set k8 v8OK127.0.0.1:9736> set k9 v9OK127.0.0.1:9736> set k10 v10 OK127.0.0.1:9736> set k11 v11OK127.0.0.1:9736> set k12 v12OK127.0.0.1:9736> set k13 v13

4. 备份

[root@VM_0_7_centos bin]# cp dump.rdb dump-bk.rdb

[root@VM_0_7_centos bin]# lltotal 37824-rw-r--r-- 1 root root     275 Sep 23 10:48 dump-bk.rdb-rw-r--r-- 1 root root     275 Sep 23 10:43 dump.rdb-rwxr-xr-x 1 root root 4739968 Jun 12 23:09 redis-benchmark-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-aof-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-check-rdb-rwxr-xr-x 1 root root 5050384 Jun 12 23:09 redis-clilrwxrwxrwx 1 root root      12 Jun 12 23:09 redis-sentinel -> redis-server-rwxr-xr-x 1 root root 9634424 Jun 12 23:09 redis-server-rwxr-xr-x 1 root root    9840 Jun 12 22:55 tclsh8.6

5. 删除信息

127.0.0.1:9736> FLUSHALLOK127.0.0.1:9736> keys *(empty array)127.0.0.1:9736> SHUTDOWNnot connected> exit[root@VM_0_7_centos bin]#

6. 重连查看内容

127.0.0.1:9736> keys *(empty array)

注意:FLUSHALL SAVE 或 SHUTDOWN 会迅速将内存数据保存至dump.rdb

7. shutdown exit

8. 恢复备份的文件

[root@VM_0_7_centos bin]# rm -f dump.rdb[root@VM_0_7_centos bin]# cp dump-bk.rdb dump.rdb

9.查看恢复的信息

127.0.0.1:9736> keys * 1) "k1" 2) "k3" 3) "k4" 4) "user" 5) "k2" 6) "list01" 7) "k8" 8) "k10" 9) "k6"10) "k9"11) "k7"12) "list02"13) "k5"

10. 及时备份命令save

三、. 其他配置

stop-writes-on-bgsave-error yes: 保存出错时停止保存

如果配置为no 表示不在乎数据不一致或者有其他的手段发现和控制、

rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,默认yes 开启

rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能

dbfilename dump.rdb :备份文件名称

dir ./ : 指定本地数据库存放目录

四、关键

12. 如何触发RDB快照

12.1 配置文件中默认的快照配置,冷拷贝后重新使用,可以cp dump.rdb dump_new.rdb

12.2 命令save或者是bgsave,

Save:save时只管保存,其他不管,全部阻塞

BGSAVE:Redis会在后台异步进行快照操作,快照操作同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间。

12.3 执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义。

13. 如何恢复

将备份文件(dump.rdb)移动到redis安装目录并启动服务即可,CONFIG GET dir获取目录

14.优势

适合大规模的数据恢复,对数据完整性和一致性要求不高

15.劣势

在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改,fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑

16.如何停止

动态所有停止RDB保存规则的方法:redis-cli config set save ""

17.小总结

感谢各位的阅读!关于"Redis持久化RDB有什么用"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

0