这篇文章给大家分享的是有关Redis持久化RDB有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
作用:在指定的时间间隔内将内存中的数据集快照写入磁盘,即Snapshot快照.它恢复时将快照文件直接读到内存中
原理:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到
一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。
整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能
如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方
式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。
缺点:有可能丢失最后一次的保存
Fork: fork的作用是复制一个与当前进程一样的进程。新进程的所有数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程
文件:Rdb保存的是dump.rdb文件
配置:SNAPSHOTTING快照
格式:save <seconds> <changes>-> save 秒钟 写操作次数
默认:默认触发条件
15分钟(900秒) 改1次
5分钟(300秒)改10次
1分钟(60 秒)改10000次
禁用:不设置 或者 save ""
设置 save 120 10 (120秒改10次)
[root@VM_0_7_centos ~]# cd /usr/local/bin [root@VM_0_7_centos bin]# ll total 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-cli lrwxrwxrwx 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
127.0.0.1:9736> set k1 v1 OK 127.0.0.1:9736> set k2 v2 OK 127.0.0.1:9736> set k3 v3 OK 127.0.0.1:9736> set k4 v4 OK 127.0.0.1:9736> set k5 v5 OK 127.0.0.1:9736> set k6 v6 OK 127.0.0.1:9736> set k7 v7 OK 127.0.0.1:9736> set k8 v8 OK 127.0.0.1:9736> set k9 v9 OK 127.0.0.1:9736> set k10 v10 OK 127.0.0.1:9736> set k11 v11 OK 127.0.0.1:9736> set k12 v12 OK 127.0.0.1:9736> set k13 v13
[root@VM_0_7_centos bin]# cp dump.rdb dump-bk.rdb
[root@VM_0_7_centos bin]# ll total 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-cli lrwxrwxrwx 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
127.0.0.1:9736> FLUSHALL OK 127.0.0.1:9736> keys * (empty array) 127.0.0.1:9736> SHUTDOWN not connected> exit [root@VM_0_7_centos bin]#
127.0.0.1:9736> keys * (empty array)
注意:FLUSHALL SAVE 或 SHUTDOWN 会迅速将内存数据保存至dump.rdb
[root@VM_0_7_centos bin]# rm -f dump.rdb [root@VM_0_7_centos bin]# cp dump-bk.rdb dump.rdb
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"
stop-writes-on-bgsave-error yes: 保存出错时停止保存
如果配置为no 表示不在乎数据不一致或者有其他的手段发现和控制、
rdbcompression:对于存储到磁盘中的快照,可以设置是否进行压缩存储。如果是的话,redis会采用LZF算法进行压缩。如果你不想消耗CPU来进行压缩的话,可以设置为关闭此功能,默认yes 开启
rdbchecksum:在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
dbfilename dump.rdb :备份文件名称
dir ./ : 指定本地数据库存放目录
12.1 配置文件中默认的快照配置,冷拷贝后重新使用,可以cp dump.rdb dump_new.rdb
12.2 命令save或者是bgsave,
Save:save时只管保存,其他不管,全部阻塞
BGSAVE:Redis会在后台异步进行快照操作,快照操作同时还可以响应客户端请求。可以通过lastsave命令获取最后一次成功执行快照的时间。
12.3 执行flushall命令,也会产生dump.rdb文件,但里面是空的,无意义。
将备份文件(dump.rdb)移动到redis安装目录并启动服务即可,CONFIG GET dir获取目录
适合大规模的数据恢复,对数据完整性和一致性要求不高
在一定间隔时间做一次备份,所以如果redis意外down掉的话,就会丢失最后一次快照后的所有修改,fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性需要考虑
动态所有停止RDB保存规则的方法:redis-cli config set save ""
感谢各位的阅读!关于“Redis持久化RDB有什么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。