和mongo的slowlog一樣,redis中對于操作時(shí)間較長(默認(rèn)為10秒)的命令也會記錄下來,不過它將它們保存在redisServer結(jié)構(gòu)中的slowlog這個(gè)鏈表中,新進(jìn)來的log排在鏈表頭部,這個(gè)鏈表的長度可以配置,超過長度(默認(rèn)為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個(gè),如果多出來了,則第32個(gè)改為"... (%d more arguments)",如果參數(shù)是字符串并且長度超過128,則將其替換為"... (%lu more bytes)",argv共享的是client中的argv,所以push ?entry時(shí)會增加原有argv的引用計(jì)數(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三個(gè)子命令。reset,len不用說,get n代表獲取最新的n條slowlog記錄。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

