studying
人心最苦处,最是拖泥带水

Redis持久化

Redis虽然是以一个内存数据库闻名的,但为了提供可靠、安全的功能保障,也是需要有持久化能力的,
Redis有两种持久化方式:RDB(redis database)持久化和AOF持久化(append only file),其中RDB是Redis默认的持久化方式。

RDB持久化

RDB持久化可以通过调用save或者bgsave命令触发,其中save命令是由redis服务进程执行的,因此是阻塞式的命令,不建议频繁使用;
bgsave则是由服务进程fork一个进程来调用,因此不影响程序执行其他命令(save、bgsave和bgwriteaof除外)。

Redis默认的持久化机制是:

save 900 1
save 300 10
save 60 10000

表示的意思是:
900秒内,有1次更新则触发bgsave
300秒内,有10次更新则触发bgsave
900秒内,有10000次更新,则触发bgsave

RDB持久化文件

RDB持久化会产生一个dump.rdb文件,我使用的redis是通过docker创建的,默认在容器内部目录/data下面

因为dump.rdb文件是压缩过的,所以直接用cat或者vi是查看不到内容的,可以使用一些工具来查看其内容,我用的是python组件rdbtools
首先安装一下:

pip3 install rdbtools
pip3 install python-lzf

然后在dump.rdb的目录使用rdb命令解析并将结果重定向到dump.json中

rdb --command json dump.rdb > dump.json

查看dump.json

当然,这里并不是dump.rdb中全部的文件内容,这里只有数据库的内容,实际上dump.rdb文件还定义了文件头,文件版本,结束符和校验和等等。

参考

书籍

黄健宏前辈的《Redis设计与实现》

网友链接

https://blog.csdn.net/floatdreamed/article/details/103720986

posted on 2020-11-25 22:12  小白一只726  阅读(158)  评论(0编辑  收藏  举报