Redis 向監(jiān)視器發(fā)送命令信息

2018-08-02 15:00 更新

服務(wù)器在每次處理命令請求之前, 都會調(diào)用 replicationFeedMonitors 函數(shù), 由這個(gè)函數(shù)將被處理命令請求的相關(guān)信息發(fā)送給各個(gè)監(jiān)視器。

以下是 replicationFeedMonitors 函數(shù)的偽代碼定義, 函數(shù)首先根據(jù)傳入的參數(shù)創(chuàng)建信息, 然后將信息發(fā)送給所有監(jiān)視器:

def replicationFeedMonitors(client, monitors, dbid, argv, argc):

    # 根據(jù)執(zhí)行命令的客戶端、當(dāng)前數(shù)據(jù)庫的號碼、命令參數(shù)、命令參數(shù)個(gè)數(shù)等參數(shù)
    # 創(chuàng)建要發(fā)送給各個(gè)監(jiān)視器的信息
    msg = create_message(client, dbid, argv, argc)

    # 遍歷所有監(jiān)視器
    for monitor in monitors:

        # 將信息發(fā)送給監(jiān)視器
        send_message(monitor, msg)

舉個(gè)例子, 假設(shè)服務(wù)器在時(shí)間 1378822257.329412 , 根據(jù) IP 為 127.0.0.1 、端口號為 56604 的客戶端發(fā)送的命令請求, 對 0 號數(shù)據(jù)庫執(zhí)行命令 KEYS * , 那么服務(wù)器將創(chuàng)建以下信息:

1378822257.329412 [0 127.0.0.1:56604] "KEYS" "*"

如果服務(wù)器 monitors 鏈表的當(dāng)前狀態(tài)如圖 24-3 所示, 那么服務(wù)器會分別將信息發(fā)送給 c128 、 c256 、 c512 和 c10086 四個(gè)監(jiān)視器, 如圖 24-4 所示。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號