Redis中什么是慢查詢、訂閱模式

本篇文章給大家介紹一下redis中的慢查詢和訂閱模式,希望對(duì)大家有所幫助!

Redis中什么是慢查詢、訂閱模式

慢查詢

慢查詢?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行時(shí)每條命令的執(zhí)行時(shí)間,當(dāng)超過(guò)閥值,就將這條命令記錄下來(lái)?!鞠嚓P(guān)推薦:redis

redis命令執(zhí)行流程

Redis中什么是慢查詢、訂閱模式

  • 發(fā)送命令

  • 命令排隊(duì)

  • 命令執(zhí)行

  • 返回結(jié)果

其中命令執(zhí)行才是慢查詢統(tǒng)計(jì)的時(shí)間

慢查詢兩個(gè)配置參數(shù)

  • slowlog-log-slower-than:預(yù)設(shè)閥值,單位是毫秒,假如執(zhí)行一條“很慢”的命令,執(zhí)行時(shí)間超過(guò)閥值就會(huì)被記錄下來(lái)

  • slowlog-max-len:設(shè)置慢查詢?nèi)罩咀疃啻鎯?chǔ)多少條

發(fā)布訂閱模式

Redis提供了發(fā)布訂閱功能,可以用于消息的傳輸,Redis的發(fā)布訂閱機(jī)制包括三個(gè)部分,發(fā)布者,訂閱者和Channel。

Redis中什么是慢查詢、訂閱模式

發(fā)布訂閱功能

  • 發(fā)送消息采用publish命令

Redis中什么是慢查詢、訂閱模式

  • 訂閱某個(gè)頻道采用subscribe命令訂閱

Redis中什么是慢查詢、訂閱模式

  • 模式匹配:同時(shí)訂閱多個(gè)頻道,命令是PSUBSCRIBE

Redis中什么是慢查詢、訂閱模式

Redis過(guò)期時(shí)間處理

  • 主動(dòng)處理

定時(shí)處理,在設(shè)置過(guò)期時(shí)間的時(shí)候創(chuàng)建一個(gè)定時(shí)器,當(dāng)過(guò)期時(shí)間到的時(shí)候立馬執(zhí)行刪除操作,這個(gè)操作是即時(shí)的,不管在這個(gè)時(shí)間段內(nèi)有多少過(guò)期Key,也不管服務(wù)器運(yùn)行情況,都會(huì)被刪除,對(duì)CPU不是很友好。

定期刪除,定期刪除是設(shè)置一個(gè)時(shí)間間隔每個(gè)時(shí)間段都會(huì)檢測(cè)是否有過(guò)期鍵,如果有就執(zhí)行刪除,

  • 被動(dòng)處理

當(dāng)已經(jīng)過(guò)期的key再次被訪問(wèn)時(shí),才會(huì)對(duì)key是否過(guò)期進(jìn)行判斷,如果已經(jīng)過(guò)期,則進(jìn)行刪除,并返回NIL.這種處理方式對(duì)CPU是友好的,不會(huì)對(duì)其他過(guò)期key上占用CPU,但對(duì)內(nèi)存不友好,一個(gè)key已經(jīng)過(guò)期,但是在它被操作前都不會(huì)被刪除,仍然占用內(nèi)存空間,如果有大量過(guò)期Key沒(méi)有被再次操作,則會(huì)浪費(fèi)大量?jī)?nèi)存空間。

3.RDB與AOF對(duì)過(guò)期鍵的處理

如果在執(zhí)行save或者bgsave命令創(chuàng)建一個(gè)RDB時(shí),程序會(huì)對(duì)數(shù)據(jù)庫(kù)中的鍵進(jìn)行檢查,已過(guò)期的鍵不會(huì)被保存到新創(chuàng)建的RDB文件中。

當(dāng)過(guò)期鍵被惰性刪除或者定期刪除之后,程序會(huì)向AOF文件追加(append)一條DEL命令,來(lái)顯式地記錄該鍵已被刪除。

在執(zhí)行AOF重寫的過(guò)程中,程序會(huì)對(duì)數(shù)據(jù)庫(kù)中的鍵進(jìn)行檢查,已過(guò)期的鍵不會(huì)被保存到重寫后的AOF文件中。

內(nèi)存回收

noeviction:默認(rèn)策略,不會(huì)刪除任何數(shù)據(jù),拒絕所有寫入操作并返回客戶端錯(cuò)誤信息,此時(shí)Redis只響應(yīng)讀操作。

volatitle-rlu:根據(jù)LRU算法刪除設(shè)置了超時(shí)屬性的鍵,知道騰出足夠空間為止。如果沒(méi)有可刪除的鍵對(duì)象,回退到noeviction策略。

allkeys-lru:根據(jù)LRU算法刪除鍵,不管數(shù)據(jù)有沒(méi)有設(shè)置超時(shí)屬性,直到騰出足夠空間為止。

allkeys-random:隨機(jī)刪除所有鍵,知道騰出足夠空間為止。

volatitle-random:隨機(jī)刪除過(guò)期鍵,知道騰出足夠空間為止。

volatitle-ttl:根據(jù)鍵值對(duì)象的ttl屬性,刪除最近將要過(guò)期數(shù)據(jù)。如果沒(méi)有,回退到noeviction策略

更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):redis??!

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊13 分享
站長(zhǎng)的頭像-小浪學(xué)習(xí)網(wǎng)月度會(huì)員