首页 > 数据库 >一个Redis dump文件的简要分析过程

一个Redis dump文件的简要分析过程

时间:2022-12-16 23:00:52浏览次数:42  
标签:文件 简要 dump Redis redis 20221216 key rdb txt

摘要

遇到一个老大难的问题.
让帮忙分析一下一个Redis的dump文件. 
虽然之前写过了rdb和rdr的文档
但是感觉大家都喜欢拿来主义.
没办法. 今天继续进行深入一点的分析.
原理其实还是基于rdb的. 不过多思考了一点别的内容.

分析原始文件

rdb -c memory redisdump.rdb -f redis_20221216_ZJ.txt
# 这个命令很费内存和CPU, 会导致较长的时间占用
rdr show -p 8888 redisdump.rdb
# 这个命令是打开一个浏览器窗口进行展示. 

分析info日志

上面两个命令的时间都极为漫长, 所以可以先看一下现场发回来的info信息
# 第一部分持久化相关的分析
# 参数含义
rdb_changes_since_last_save:表示最近一次成功生成rdb文件时写入的命令个数。
rdb_bgsave_in_progress:表示服务器是否正在创建rdb文件。
rdb_last_save_time:表示最近一次成功生成rdb文件的时间戳。
rdb_last_bgsave_status:标识最近一次rdb持久化是否成功。
rdb_last_bgsave_time_sec:表示最近一次成功生成rdb文件消耗的时间。
rdb_current_bgsave_time_sec:表示当前服务器正在创建rdb文件的操作已经消耗的时间
rdb_last_cow_size:表示RDB过程中父进程与子进程比较执行了多少修改操作。

From https://weibo.com/ttarticle/p/show?id=2309404650615585505652

分析info日志

# 内存设置相关
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction

未设置最高内存限制,容易搞出问题感觉. 
used_memory_human:7.33G
used_memory_rss_human:9.49G

分析rdb转储的key信息文件

# 第一步: 
分析前导key的信息以及进行排序
注意 此为一条命令. 承接rdb 分析的 dump文件的结果. 
cat redis_20221216_ZJ.txt |awk -F "," '{print $3}' 
|awk -F ":" '{print $1}'|sort |uniq -c |
sort -k1hr  >redis_keys_01.txt

将key前缀从大到小进行排列并且转储到 redis_keys_01.txt 目录中. 

# 第二步:
分析dump里面key值的过期时间信息, 并且逆序排序
cat redis_20221216_ZJ.txt |awk -F "," '{print $NF,$3}' |sort -k1hr
> redis_expire.txt
注意 最前面的一部分 是没有过期时间的key
expiry key 进行分割. 后面的key 都是根据时间时间由早到晚排列

其实 info里面没有配置 maxmemory 也没有设置 memory_policy 这么查没意义.
过期和不过期的key 都存在于redis-server的进程里面. 

在线监控Redis执行的命令 60秒钟

# 注意timeout命令会监控60秒的时间. 然后写入到对应的文件中
# 可以作为简单进行性能判断的依旧.
# grafana的抽象频率太低了可能会导致误判. 但是monitor会出现严重的性能损耗.
# 酌情使用
# 不给钱 用坏了是我是不会赔的. 
time timeout 60  redis-cli  -p 6377 monitor >20221216_6377.txt
time timeout 60  redis-cli  -p 6378 monitor >20221216_6378.txt
time timeout 60  redis-cli  -p 6379 monitor >20221216_6379.txt

标签:文件,简要,dump,Redis,redis,20221216,key,rdb,txt
From: https://www.cnblogs.com/jinanxiaolaohu/p/16988459.html

相关文章

  • 【SpringBoot】Spring Data Redis封装和Spring Cache
    一、参考资料​​RedisUtil:最全的Java操作Redis的工具类,使用StringRedisTemplate实现,封装了对Redis五种基本类型的各种操作!​​​​SpringCache-简书​​​​redis分布......
  • dnmp 运行多PHP版本--PHP74安装支持swoole,kafka, redis
    官方文档:https://github.com/yeszao/dnmp本身默认PHP7.1版本如果需要同时支持多个版本PHP,需要另外在配置下面举例子配置多个PHP版本--PHP7.4dnmp/service目录下......
  • 2.0 Redis持久化、主从与哨兵架构
    Redis持久化、主从与哨兵架构一、Redis持久化1.1RDB快照(snapshot)在默认情况下,Redis将内存数据库快照保存在名字为dump.rdb的二进制文件中。你可以对Redis进行......
  • centos下php redis扩展的安装配置3种方法
    方法一1.下载phpredis扩展包 代码如下复制代码#wgethttp://redis.googlecode.com/files/redis-2.4.4.tar.gz2tar-zxvf解压压缩包,cd/扩展包(进入扩展包然后运行phpiz......
  • docker 安装redis并配置外网访问
    docker安装redis并配置外网访问dockerpullredis拉取最新版本的redis,后面也可以加tag指定版本号dockerpullredisdocker安装redis容器(container)安装之前定......
  • redis 查找模糊key [scanKeys]
    /***以count为步长查找符合pattern条件的keys**@paramredisTemplate指定redis*@parampattern匹配条件*@paramcount一次在count条记录中match符合pattern条......
  • python 操作redis有序集合
      https://feeler.blog.csdn.net/article/details/103100452?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogComme......
  • Chapter 10.利用Redis Zset实现双维度排行榜
    欢迎来到「我是真的狗杂谈世界」,关注不迷路背景最近需要将遇到的几个排行需求点抽出来做一个独立的通用排行组件,整理记录一下。核心需求能获得连续的部分的榜单:比如......
  • Linux系统启动redis(不是docker安装的redis)
    Linux系统启动redis(不是docker安装的redis)linux安装redis相关命令一、查看redis是否启动:ps-aux|grepredis二、查找redis安装目录whereisredisredis:/usr/loca......
  • Redis原理(四):内存回收
    过期策略过期策略-DB结构Redis本身是一个典型的key-value内存存储数据库,因此所有的key、value都保存在之前学习过的Dict结构中。不过在其database结构体中,有两个Dict:一......