zoukankan      html  css  js  c++  java
  • Redis DEBUG 调试命令

    本文主要记录一下redis调试相关的命令。
    命令总览:
    1.PING
    2.ECHO
    3.OBJECT
    4.SLOWLOG
    5.MONITOR
    6.DEBUG_OBJECT
    7.DEBUG_SEGFAULT
     
    命令介绍:
    1.PING
    可用版本: >=1.0.0
    时间复杂度: O(1)
    命令格式: PING
    作用:
    使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG 。
    返回值:
    如果连接正常就返回一个 PONG ,否则返回一个连接错误。
    命令演示:
    127.0.0.1:6379> ping
    PONG
     
    2.ECHO
    可用版本: >=1.0.0
    时间复杂度: O(1)
    命令格式: ECHO message
    作用:
    打印一个特定的信息message。
    返回值:
    返回message。
    命令演示:
    127.0.0.1:6379> echo "hello"
    "hello"
     
    3.OBJECT
    可用版本: >=2.2.3
    时间复杂度: O(1)
    命令格式: OBJECT subcommand [argments [argments]]
    作用:
    OBJECT 命令允许从内部察看给定 key 的 Redis 对象, 它通常用在除错(debugging)或者了解为了节省空间而对 key 使用特殊编码的情况。 当将Redis用作缓存程序时,你也可以通过 OBJECT 命令中的信息,决定 key 的驱逐策略(eviction policies)。
    子命令:
    OBJECT REFCOUNT <key> 返回给定 key 引用所储存的值的次数。此命令主要用于除错。
    OBJECT ENCODING <key> 返回给定 key 锁储存的值所使用的内部表示(representation)。
    OBJECT IDLETIME <key> 返回给定 key 自储存以来的空闲时间(idle, 没有被读取也没有被写入),以秒为单位。
    返回值:
    REFCOUNT 和 IDLETIME 返回数字。 ENCODING 返回相应的编码类型。
    其它:
    字符串可以被编码为 raw (一般字符串)或 int (为了节约内存,Redis 会将字符串表示的 64 位有符号整数编码为整数来进行储存)。
    列表可以被编码为 ziplist 或 linkedlist 。 ziplist 是为节约大小较小的列表空间而作的特殊表示。
    集合可以被编码为 intset 或者 hashtable 。 intset 是只储存数字的小集合的特殊表示。
    哈希表可以编码为 zipmap 或者 hashtable 。 zipmap 是小哈希表的特殊表示。
    有序集合可以被编码为 ziplist 或者 skiplist 格式。 ziplist 用于表示小的有序集合,而 skiplist 则用于表示任何大小的有序集合。
    命令演示:
    127.0.0.1:6379> set name 'Zhangsan'
    OK
    127.0.0.1:6379> OBJECT refcount name
    (integer) 1
    127.0.0.1:6379> OBJECT idletime name
    (integer) 27
    127.0.0.1:6379> get name
    "Zhangsan"
    127.0.0.1:6379> OBJECT idletime name
    (integer) 1
    127.0.0.1:6379> OBJECT encoding name
    "embstr"
    127.0.0.1:6379> set bnum 111999999999999999999999999999999999
    OK
    127.0.0.1:6379> OBJECT encoding bnum
    "embstr"
    127.0.0.1:6379> set snum 123
    OK
    127.0.0.1:6379> OBJECT encoding snum
    "int"
     
    4.SLOWLOG
    可用版本: >=2.2.12
    时间复杂度: O(1)
    命令格式: slowlog get number
    作用:
    Slow log 是 Redis 用来记录查询执行时间的日志系统。
    查询执行时间指的是不包括像客户端响应(talking)、发送回复等 IO 操作,而单单是执行一个查询命令所耗费的时间。
    另外,slow log 保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启 slow log 而损害 Redis 的速度。
    设置:
    Slow log 的行为由两个配置参数(configuration parameter)指定,可以通过改写 redis.conf 文件或者用 CONFIG GET 和 CONFIG SET 命令对它们动态地进行修改。
    第一个选项是 slowlog-log-slower-than ,它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
    比如执行以下命令将让 slow log 记录所有查询时间大于等于 100 微秒的查询:
    CONFIG SET slowlog-log-slower-than 100
    而以下命令记录所有查询时间大于 1000 微秒的查询:
    CONFIG SET slowlog-log-slower-than 1000
    另一个选项是 slowlog-max-len ,它决定 slow log 最多能保存多少条日志, slow log 本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len 时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log ,以此类推。
    以下命令让 slow log 最多保存 1000 条日志:
    CONFIG SET slowlog-max-len 1000
    返回值:
    取决于不同命令,返回不同的值。
    其它:
    不添加number参数的话,将会打印所有的slow log,有number参数的话,打印前number条slow log,最新的日志将会最先打印出来。
    可以使用slowlog len查看当前日志数量。
    可以使用slowlog reset 清空当前记录的slow log。
    命令演示:
    127.0.0.1:6379> CONFIG GET slowlog-log-slower-than
    1) "slowlog-log-slower-than"
    2) "10000"
    127.0.0.1:6379> CONFIG GET slowlog-max-len
    1) "slowlog-max-len"
    2) "128"
    127.0.0.1:6379> SLOWLOG get 
    (empty array)
    127.0.0.1:6379> SLOWLOG get 1
    (empty array)
    127.0.0.1:6379> SLOWLOG len
    (integer) 0
    127.0.0.1:6379> SLOWLOG reset
    OK
     
    5.MONITOR
    可用版本: >=1.0.0
    时间复杂度: O(N)
    命令格式: MONITOR
    作用:
    实时打印出Redis服务器接收到的命令。
    返回值:
    返回OK。
     
    6.DEBUG_OBJECT
    可用版本: >=1.0.0
    时间复杂度: O(1)
    命令格式: DEBUG OBJECT key
    作用:
    查看key的相关信息
    返回值:
    key存在,返回相关信息,不存在返回error。
    127.0.0.1:6379> DEBUG OBJECT snum
    Value at:0x7ff60804da80 refcount:2147483647 encoding:int serializedlength:2 lru:689083 lru_seconds_idle:1752
    127.0.0.1:6379> DEBUG OBJECT snumc
    (error) ERR no such key
     
    7.DEBUG_SETFAULT
    可用版本: >=1.0.0
    时间复杂度: O(1)
    命令格式: DEBUG SETFAULT
    作用:
    执行一个不合法的内存访问从而让 Redis 崩溃,仅在开发时用于 BUG 模拟。
    返回值:
    无。
    作者:红雨
    出处:https://www.cnblogs.com/52why
    微信公众号: 红雨python
  • 相关阅读:
    C++ 面向对象高级开发 -- static
    C++ 面向对象高级开发 -- complex 类的实现
    单独编译PCL的kdtree模块报错“undefined reference to”
    【C++】预处理指令#define,#ifdef,#ifndef,#endif ...
    点云配准(Registration)算法——以PCL为例
    算法岗求职资料汇总
    C++面向对象高级开发
    opencv的常用头文件
    ubuntu下,VSCode采用cmake编译C++工程
    "error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
  • 原文地址:https://www.cnblogs.com/52why/p/14357790.html
Copyright © 2011-2022 走看看