Redis持久化之RDB持久化
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
书上说,天下没有不散的宴席。不要怕,书上还说了,人生何处不相逢。