99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Redis 添加新日志

2018-08-02 15:00 更新

添加新日志

在每次執(zhí)行命令的之前和之后, 程序都會記錄微秒格式的當前 UNIX 時間戳, 這兩個時間戳之間的差就是服務器執(zhí)行命令所耗費的時長, 服務器會將這個時長作為參數(shù)之一傳給 slowlogPushEntryIfNeeded 函數(shù), 而 slowlogPushEntryIfNeeded 函數(shù)則負責檢查是否需要為這次執(zhí)行的命令創(chuàng)建慢查詢日志, 以下偽代碼展示了這一過程:

# 記錄執(zhí)行命令前的時間
before = unixtime_now_in_us()

# 執(zhí)行命令
execute_command(argv, argc, client)

# 記錄執(zhí)行命令后的時間
after = unixtime_now_in_us()

# 檢查是否需要創(chuàng)建新的慢查詢日志
slowlogPushEntryIfNeeded(argv, argc, before-after)

slowlogPushEntryIfNeeded 函數(shù)的作用有兩個:

  1. 檢查命令的執(zhí)行時長是否超過 slowlog-log-slower-than 選項所設置的時間, 如果是的話, 就為命令創(chuàng)建一個新的日志, 并將新日志添加到 slowlog 鏈表的表頭。
  2. 檢查慢查詢日志的長度是否超過 slowlog-max-len 選項所設置的長度, 如果是的話, 那么將多出來的日志從 slowlog 鏈表中刪除掉。

以下是 slowlogPushEntryIfNeeded 函數(shù)的實現(xiàn)代碼:

void slowlogPushEntryIfNeeded(robj **argv, int argc, long long duration) {

    // 慢查詢功能未開啟,直接返回
    if (server.slowlog_log_slower_than < 0) return;

    // 如果執(zhí)行時間超過服務器設置的上限,那么將命令添加到慢查詢日志
    if (duration >= server.slowlog_log_slower_than)
        // 新日志添加到鏈表表頭
        listAddNodeHead(server.slowlog,slowlogCreateEntry(argv,argc,duration));

    // 如果日志數(shù)量過多,那么進行刪除
    while (listLength(server.slowlog) > server.slowlog_max_len)
        listDelNode(server.slowlog,listLast(server.slowlog));
}

函數(shù)中的大部分代碼我們已經介紹過了, 唯一需要說明的是 slowlogCreateEntry 函數(shù): 該函數(shù)根據傳入的參數(shù), 創(chuàng)建一個新的慢查詢日志, 并將 redisServer.slowlog_entry_id 的值增一。

舉個例子, 假設服務器當前保存的慢查詢日志如圖 23-2 所示, 如果我們執(zhí)行以下命令:

redis> EXPIRE msg 10086
(integer) 1

服務器在執(zhí)行完這個 EXPIRE 命令之后, 就會調用 slowlogPushEntryIfNeeded 函數(shù), 函數(shù)將為 EXPIRE 命令創(chuàng)建一條 id 為 6 的慢查詢日志, 并將這條新日志添加到 slowlog 鏈表的表頭, 如圖 23-3 所示。

注意, 除了 slowlog 鏈表發(fā)生了變化之外, slowlog_entry_id 的值也從 6 變?yōu)?nbsp;7 了。

之后, slowlogPushEntryIfNeeded 函數(shù)發(fā)現(xiàn), 服務器設定的最大慢查詢日志數(shù)目為 5 條, 而服務器目前保存的慢查詢日志數(shù)目為 6 條, 于是服務器將 id 為 1 的慢查詢日志刪除, 讓服務器的慢查詢日志數(shù)量回到設定好的 5 條。

刪除操作執(zhí)行之后的服務器狀態(tài)如圖 23-4 所示。

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號