使用过Redis,我竟然还不知道Rdb (3)

RDB(Redis DataBase)方式是通过快照完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照,并且存储到硬盘上,RDB是Redis的默认持久化方式。

vim /usr/local/redis/conf/redis.conf

 

save 900 1    #15分钟内有至少1个键被更改

save 300 10   #5分钟内至少有10个键被更改

save 60 1000  #1分钟内至少有10000个键被更改

 

#以上条件都是或的关系,当满足其一就会进行快照。

 

dbfilename "dump.rdb"       #持久化文件名称

dir "/data/dbs/redis/6381"  #持久化数据文件存放的路径

 

#配置文件修改后,需要重启redis服务。

还可以通过命令行的方式进行配置:

CONFIG GET save    #查看redis持久化配置

 

CONFIG SET save "100 20" #修改redis持久化配置

 

#使用命令行的方式配置,即时生效,服务器重启后需要重新配置。

RDB - 手动

save

该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。

显然该命令对于内存比较大的实例会造成长时间阻塞,这是致命的缺陷。

bgsave

执行该命令时,Redis会在后台异步进行快照操作,快照同时还可以响应客户端请求。

具体操作是Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。阻塞只发生在fork阶段。

AOF

AOF(APPEND ONLY MODE)是通过保存对redis服务端的写命令(如set、sadd、rpush)来记录数据库状态的,即保存你对redis数据库的写操作。

配置日志文件如下:

vim /usr/local/redis/conf/redis.conf

dir "/data/dbs/redis/6381"           #AOF文件存放目录

appendonly yes                       #开启AOF持久化,默认关闭

appendfilename "appendonly.aof"      #AOF文件名称(默认)

appendfsync no                       #AOF持久化策略

auto-aof-rewrite-percentage 100      #触发AOF文件重写的条件(默认)

auto-aof-rewrite-min-size 64mb       #触发AOF文件重写的条件(默认)

 

#上面的每个参数,可以找资料了解下,不做多解释了。

RDB 与 AOF 的优缺点,见上面的即可。

至此,我们了解了 Redis 持久化的一些配置,里面的细节建议查询相关资料进行研究。

接下来继续,通过上一步我们拿到了 rdb 文件,就相当于拿到了Redis实例的数据。

解析 rdb 文件,获取key和value的值。

根据相应的数据结构及内容,估算内存消耗。

统计并生成报表。

分析工具

雪球 rdr:

https://github.com/xueqiu/rdr

redis-rdb-tools:

https://github.com/sripathikrishnan/redis-rdb-tools

小结

讲解了工作中常用的 redis 使用场景。

讲解了 redis 持久化的两个方式(RDB、AOF)。

推荐了两个分析rdb的工具。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjfwp.html