溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis中的慢查詢是什么

發(fā)布時間:2021-07-13 14:59:33 來源:億速云 閱讀:226 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“Redis中的慢查詢是什么”,在日常操作中,相信很多人在Redis中的慢查詢是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Redis中的慢查詢是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

在其它Redis中的文章中已經(jīng)介紹過了一個Redis命令在執(zhí)行時要分4個步驟:

  1. 發(fā)送命令

  2. 命令排隊

  3. 命令執(zhí)行

  4. 返回結(jié)果

也就是如下圖所示:

Redis中的慢查詢是什么

備注:上面介紹的慢查詢指的是步驟3的時間,也就是Redis命令的執(zhí)行時間,所以在Redis中慢查詢的時間和客戶端的超時時間根本不是一回事。


慢查詢的配置參數(shù)

要想使用Redis中的慢查詢功能,我們要明白兩個事情:

  • 怎么設置超時參數(shù)

  • 記錄的日志目錄

在Redis中我們可以使用

showlog-log-slower-than


參數(shù)來設置命令的超時時間,并且這個超時時間的單位是微妙(1秒=1000毫秒=1000000微妙),

showlog-log-slower-than


參數(shù)有自己的默認值,默認為10000。也就是如果我們不修改Redis中任何參數(shù)時,當Redis中的執(zhí)行命令的時間超過10000微妙時,Redis就會將該條命令的信息記錄到日志中。

備注:如果當參數(shù)showlog-log-slower-than=0時,Redis則會記錄所有執(zhí)行的命令,如果當showlog-log-slower-than<0時,Redis則不會記錄任何執(zhí)行過的命令。


下面我們看一下Redis中慢查詢的日志存儲的位置。實際上在Redis中,當有慢查詢記錄命令的時候,并不是將信息存儲在某個真正的目錄中,而是將信息存儲到了一個列表中維護。而showlog-max-len參數(shù),就是該列表的最大長度。當慢查詢中的記錄數(shù)超過了showlog-max-len參數(shù)時,那么Redis會將該列表中最先存儲的信息刪除。

下面我們了解一下怎么設置上面提到的兩個參數(shù)。在Redis中修改上面配置參數(shù)有兩種辦法:

  • 直接修改Redis中的配置文件

  • 可以使用config set命令動態(tài)修改參數(shù)

Redis中的慢查詢是什么

下面我們了解一下怎么操作慢查詢中的列表。

1.獲取慢查詢?nèi)罩?/p>

slowlog get [n]
Redis中的慢查詢是什么

在Redis中slowlog命令的列表中主要記錄了4方面的信息,它們分別是慢查詢?nèi)罩镜臉俗Rid、發(fā)生時間、命令耗時、執(zhí)行命令、等信息。


2.獲取慢查詢?nèi)罩玖斜懋斍暗拈L度

slowlog len
Redis中的慢查詢是什么

3.慢查詢?nèi)罩局刂?/p>

slowlog reset
Redis中的慢查詢是什么

下面我們看一下我們在使用Redis中慢查詢功能的注意事項。

  • slow-max-len參數(shù):因為當Redis中慢查詢的信息過多時,Redis會清除之前的慢查詢列表中的信息,所以為了必免Redis有頻繁清除過多慢查詢信息的可能,slow-max-len參數(shù)相對來說可以設置的大一點,例如1000左右。

  • slowlog-log-slower-than參數(shù):因為該參數(shù)默認為10毫秒,也就是當Redis中的命令超過10毫秒時,Redis會被認為該命令為慢查詢。雖然10毫秒相對來說比較快,但在某些情況,我們可能會在將slowlog-log-slower-than參數(shù)調(diào)的小一些。例如大并發(fā)的時候。因為按照評測當Redis中的命令超過1毫秒時,那么當前Redis最多可支撐的QPS不到1000,所以在大并發(fā)時,我們可以將slowlog-log-slower-than參數(shù)調(diào)整為1毫秒。

  • 因為慢查詢記錄的是命令的執(zhí)行時間,而不包括命令的排隊和網(wǎng)絡傳輸時間。所以客戶端命令的時間會大于命令的實際執(zhí)行時間。因為Redis單線程的架構及命令的排隊機制,所以慢查詢也可能會導致命令的阻塞。

  • 因為慢查詢的信息是被記錄到了Redis中的一個列表中,并且是先進先出的。所以當Reids中的慢查詢過多時,曾經(jīng)記錄的慢查詢信息則會被刪除。所以為了保證我們的慢查詢信息不會丟失,我們可以不定期的執(zhí)行slow get命令將信息持久化存儲。

到此,關于“Redis中的慢查詢是什么”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)
AI