redis(13)服務(wù)器

1鲫懒、命令請(qǐng)求的執(zhí)行過(guò)程

1.1、客戶端向服務(wù)器發(fā)送命令請(qǐng)求set key value

1.2刽辙、服務(wù)器接收并處理客戶端發(fā)送來(lái)的命令窥岩,在數(shù)據(jù)庫(kù)中進(jìn)行設(shè)置,并產(chǎn)生命令回復(fù)

1.3宰缤、服務(wù)器將命令回復(fù)發(fā)送給客戶端

1.4颂翼、客戶端收到服務(wù)器命令回復(fù)晃洒,并將這個(gè)回復(fù)打印給用戶

2、發(fā)送命令請(qǐng)求

客戶端會(huì)將命令請(qǐng)求轉(zhuǎn)換成協(xié)議格式朦乏,然后通過(guò)連接到服務(wù)器的套接字球及,將協(xié)議格式的命令請(qǐng)求發(fā)送給服務(wù)器

3、讀取命令請(qǐng)求

1)呻疹、讀取套接字中協(xié)議格式的命令請(qǐng)求吃引,并將其保存到客戶端狀態(tài)的輸入緩沖區(qū)里面

2)、對(duì)緩沖區(qū)中的命令請(qǐng)求進(jìn)行分析诲宇,提取出命令請(qǐng)求中包含的命令參數(shù)际歼,以及命令參數(shù)的個(gè)數(shù),然后分別保存到客戶端狀態(tài)的argv屬性和argc屬性里面

3)姑蓝、調(diào)用命令執(zhí)行器鹅心,執(zhí)行客戶端制定命令

3、命令執(zhí)行器

1)纺荧、首先根據(jù)客戶端狀態(tài)的argv[0]參數(shù)旭愧,在命令表(command table) 中查找參數(shù)所指定的命令,并將找到的命令保存到客戶端狀態(tài)的cmd屬性里面宙暇,命令表是一個(gè)字典

命令名字大小寫(xiě)不影響結(jié)果

2)输枯、執(zhí)行預(yù)備操作

檢查cmd指針是否指向null,null則不執(zhí)行后續(xù)步驟

cmd找到redisCommand結(jié)構(gòu)的artity屬性,檢查命令請(qǐng)求所給定的參數(shù)個(gè)數(shù)是否正確占贫,比如artity=-3桃熄,那么輸入?yún)?shù)個(gè)數(shù)必須大于等于3

驗(yàn)證身份

如果開(kāi)啟maxmemory功能,那么檢查內(nèi)存占用情況型奥,需要時(shí)瞳收,進(jìn)行回收

如果客戶端正在使用subscribe命令訂閱頻道,或者正在用psubscribe訂閱厢汹,那么服務(wù)器只會(huì)執(zhí)行客戶端發(fā)來(lái)的subscribe psubscribe unsubscribe unpsubscribe

如果服務(wù)器正在進(jìn)行數(shù)據(jù)載入螟深,那么客戶端發(fā)送命令必須帶有標(biāo)志1

如果服務(wù)器因?yàn)閳?zhí)行l(wèi)ua腳本而超時(shí)并進(jìn)入阻塞狀態(tài),那么服務(wù)器只會(huì)執(zhí)行客戶端發(fā)來(lái)的shutdown nosave 和 script kill 命令烫葬,其他被拒絕

如果服務(wù)器正在執(zhí)行事務(wù)界弧,那么服務(wù)器只會(huì)執(zhí)行客戶端發(fā)來(lái)的exec discard multi watch 四個(gè)命令,其他的被放進(jìn)事物隊(duì)列

如果服務(wù)器打開(kāi)監(jiān)視器功能搭综,則將要執(zhí)行的命令發(fā)送給監(jiān)視器

當(dāng)完成以上預(yù)備操作之后垢箕,服務(wù)器就可以開(kāi)始真正執(zhí)行命令了

3)、調(diào)用命令的實(shí)現(xiàn)函數(shù)

4)兑巾、執(zhí)行后續(xù)工作

如果開(kāi)啟慢日志查詢舰讹,則判斷是否需要記錄慢日志

根據(jù)命令所耗費(fèi)時(shí)長(zhǎng),更新被執(zhí)行命令的redisCommand結(jié)構(gòu)的milliseconds屬性闪朱,并將命令的redisCommand結(jié)構(gòu)的calls計(jì)數(shù)器的值增一

如果開(kāi)啟aof持久化月匣,則寫(xiě)入aof緩沖區(qū)

如果從服務(wù)器正在復(fù)制當(dāng)前服務(wù)器,則服務(wù)器將執(zhí)行的命令傳播給所有從服務(wù)器

4奋姿、serverCron函數(shù)

serverCron函數(shù)默認(rèn)每隔100毫秒執(zhí)行一次锄开,這個(gè)函數(shù)負(fù)責(zé)管理服務(wù)器的資源,并保持服務(wù)器自身運(yùn)作良好

serverCron每隔100毫秒一次的頻率更新unixtime屬性和mstime屬性称诗,當(dāng)前時(shí)間萍悴,所以這兩個(gè)屬性記錄的時(shí)間精度不高

5、初始化服務(wù)器

1)寓免、初始化服務(wù)器狀態(tài)結(jié)構(gòu)

2)癣诱、載入配置選項(xiàng)

3)、初始化服務(wù)器數(shù)據(jù)結(jié)構(gòu)

4)袜香、還原數(shù)據(jù)庫(kù)狀態(tài)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末撕予,一起剝皮案震驚了整個(gè)濱河市唱遭,隨后出現(xiàn)的幾起案子蹬碧,更是在濱河造成了極大的恐慌创肥,老刑警劉巖徙赢,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件枣耀,死亡現(xiàn)場(chǎng)離奇詭異哼丈,居然都是意外死亡推姻,警方通過(guò)查閱死者的電腦和手機(jī)拧廊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門踩寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)啄清,“玉大人,你說(shuō)我怎么就攤上這事俺孙±弊洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵鼠冕,是天一觀的道長(zhǎng)添寺。 經(jīng)常有香客問(wèn)我,道長(zhǎng)懈费,這世上最難降的妖魔是什么计露? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮憎乙,結(jié)果婚禮上票罐,老公的妹妹穿的比我還像新娘。我一直安慰自己泞边,他們只是感情好该押,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著阵谚,像睡著了一般蚕礼。 火紅的嫁衣襯著肌膚如雪烟具。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天奠蹬,我揣著相機(jī)與錄音朝聋,去河邊找鬼。 笑死囤躁,一個(gè)胖子當(dāng)著我的面吹牛冀痕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播狸演,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼言蛇,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了宵距?” 一聲冷哼從身側(cè)響起腊尚,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎消玄,沒(méi)想到半個(gè)月后跟伏,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翩瓜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年受扳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兔跌。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勘高,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坟桅,到底是詐尸還是另有隱情华望,我是刑警寧澤,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布仅乓,位于F島的核電站赖舟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏夸楣。R本人自食惡果不足惜宾抓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豫喧。 院中可真熱鬧石洗,春花似錦、人聲如沸紧显。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)孵班。三九已至涉兽,卻和暖如春招驴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背花椭。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工忽匈, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人矿辽。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像郭厌,于是被迫代替她去往敵國(guó)和親袋倔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 10,970評(píng)論 6 13
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,101評(píng)論 1 32
  • 命令請(qǐng)求的執(zhí)行過(guò)程 客戶端發(fā)送一個(gè)set命令到收到回復(fù)期間的步驟如下 1.客戶端向服務(wù)端發(fā)生命令請(qǐng)求SET KEY...
    簡(jiǎn)書(shū)徐小耳閱讀 250評(píng)論 0 0
  • 數(shù)據(jù)庫(kù) 多數(shù)據(jù)庫(kù)結(jié)構(gòu) 一個(gè)Redis實(shí)例可以支持多個(gè)數(shù)據(jù)庫(kù)折柠,當(dāng)客戶端與服務(wù)端連接并指定到某個(gè)數(shù)據(jù)庫(kù)時(shí)宾娜,兩者的結(jié)構(gòu)如...
    宇宙最強(qiáng)架構(gòu)師閱讀 612評(píng)論 0 3
  • 第二天開(kāi)始白天去山野看畫(huà)家寫(xiě)生,拍照片素材扇售。晚上看外國(guó)畫(huà)家示范前塔,聽(tīng)講座。又涂了一張城口承冰。 未經(jīng)同意請(qǐng)勿轉(zhuǎn)載华弓。
    小塵199211閱讀 140評(píng)論 0 0