閱讀485 返回首頁    go 技術社區[雲棲]


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

  上一篇:go 使用 PHP 和 Phalcon 作 daemon 進程
  下一篇:go 棱鏡-分布式實時計算的跟蹤校驗係統