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 模擬。
返回值:
無。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM