和mongo的slowlog一樣,redis中對(duì)于操作時(shí)間較長(zhǎng)(默認(rèn)為10秒)的命令也會(huì)記錄下來(lái),不過(guò)它將它們保存在redisServer結(jié)構(gòu)中的slowlog這個(gè)鏈表中,新進(jìn)來(lái)的log排在鏈表頭部,這個(gè)鏈表的長(zhǎng)度可以配置,超過(guò)長(zhǎng)度(默認(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è),如果多出來(lái)了,則第32個(gè)改為"... (%d more arguments)",如果參數(shù)是字符串并且長(zhǎng)度超過(guò)128,則將其替換為"... (%lu more bytes)",argv共享的是client中的argv,所以push ?entry時(shí)會(huì)增加原有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中。看起來(lái),它支持reset,len,get三個(gè)子命令。reset,len不用說(shuō),get n代表獲取最新的n條slowlog記錄。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

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