和mongo的slowlog一樣,redis中對于操作時間較長(默認為10秒)的命令也會記錄下來,不過它將它們保存在redisServer結(jié)構(gòu)中的slowlog這個鏈表中,新進來的log排在鏈表頭部,這個鏈表的長度可以配置,超過長度(默認為128)則將鏈表尾部元素踢掉。
鏈表中的元素是slowlogEntry:
// This structure defines an entry inside the slow log list.
typedef struct slowlogEntry {
? robj** argv;
? int argc;
? long long id; ?// Unique entry identifier.
? long long duration; ?// Time spent by the query, in nanoseconds.
? time_t time; ?// Unix time at which the query was executed.
} slowlogEntry;
argv最多只保存32個,如果多出來了,則第32個改為"... (%d more arguments)",如果參數(shù)是字符串并且長度超過128,則將其替換為"... (%lu more bytes)",argv共享的是client中的argv,所以push ?entry時會增加原有argv的引用計數(shù)。
j接口如下:
// Exported API.
void slowlogInit(void);
void slowlogPushEntryIfNeeded(robj** argv, int argc, long long duration);
// Exported commands.
void slowlogCommand(redisClient* c);?
slowlogCommand是執(zhí)行slowlog命令,命令帶的參數(shù)在redisClient中的argv中。看起來,它支持reset,len,get三個子命令。reset,len不用說,get n代表獲取最新的n條slowlog記錄。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
