• 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
  • 相关阅读:
    第一节课课堂总结--付胤
    自我介绍--付胤
    JavaScript面向对象的理解
    与redmine对接
    CCS3属性之text-overflow:ellipsis;的用法和注意之处
    自定义TextView带有各类.ttf字体的TextView
    百度地图sdk的使用
    DrawRightEditText自定义EditText实现有内容时右侧图标按钮显示无内容时右侧图标按钮隐藏加上为空时晃动动画(二)
    DrawRightEditText自定义EditText实现有内容时右侧图标按钮显示无内容时右侧图标按钮隐藏加上为空时晃动动画
    首页底部菜单FragmentTabHost的使用
  • 原文地址:https://www.cnblogs.com/52why/p/14357790.html
Copyright © 2020-2023  润新知