485
技術社區[雲棲]
redis debug命令詳解
redis debug命令提供了幾個非常實用的debug功能,本文介紹下redis-2.8.19下的debug命令。
debug segment
讓redis發生段錯誤,如果開啟了coredump,則會產生core文件。這個命令實現很簡單,直接往一個非法地址上寫數據。
*((char*)-1) = 'x';
debug oom
申請一大片內存,直接讓zmalloc觸發oom錯誤
void *ptr = zmalloc(ULONG_MAX); /* Should trigger an out of memory. */
zfree(ptr);
addReply(c,shared.ok);
debug assert
不多解釋
redisAssertWithInfo(c,c->argv[0],1 == 2);
debug reload
save當前的rdb文件,並清空當前數據庫,重新加載rdb,加載與啟動時加載類似,加載過程中隻能服務部分隻讀請求(比如info、ping等)
rdbSave();
emptyDb();
rdbLoad();
debug loadaof
清空當前數據庫,重新從aof文件裏加載數據庫
emptyDb();
loadAppendOnlyFile();
debug object
查看一個key內部信息,比如refcount、encoding、serializedlength等,結果如下
Value at:0x7f21b9479850 refcount:1 encoding:raw serializedlength:6 lru:8462202 lru_seconds_idle:215
debug sdslen
查看某個sds當前的信息,當前sds長度,以及可用內存長度,結果如下
key_sds_len:3, key_sds_avail:0, val_sds_len:5, val_sds_avail:0
debug populate
測試利器,快速產生大量的key
127.0.0.1:6379> debug populate 10000
OK
127.0.0.1:6379> dbsize
(integer) 10000
debug digest
對整個數據庫的數據,產生一個摘要,可用於驗證兩個redis數據庫數據是否一致
127.0.0.1:6379> debug digest
7164ae8b6730c8bcade46532e5e4a8015d4cccfb
127.0.0.1:6379> debug digest
7164ae8b6730c8bcade46532e5e4a8015d4cccfb
debug sleep
測試利器,用於模擬某個時間開銷的命令,比如debug sleep 0.1就相當於執行了一條開銷為100ms的命令。
127.0.0.1:6379> debug sleep 1
OK
(1.00s)
debug error
測試利器,模擬一條命令執行失敗,發送debug error,redis直接會返回一個錯誤應答
127.0.0.1:6379> debug error "test"
(error) test
最後更新:2017-04-01 13:37:10