共計 2490 個字符,預計需要花費 7 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章將為大家詳細講解有關 redis 慢查詢指的是什么,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
redis 慢查詢指的是命令執行時長比較長的查詢,其慢查詢日志就是 Redis 服務端在命令執行前后計算每條命令的執行時長,當超過某個閾值是記錄下來的日志,日志中記錄了慢查詢發生的時間,還有執行時長、具體什么命令等信息。
什么是慢查詢?
慢查詢,顧名思義就是比較慢的查詢,但是究竟是哪里慢呢?首先,我們了解一下 Redis 命令執行的整個過程:
發送命令命令排隊命令執行返回結果
在慢查詢的定義中,統計比較慢的時間段指的是命令執行這個步驟。沒有慢查詢,并不表示客戶端沒有超時問題,有可能網絡傳輸有延遲,也有可能排隊的命令比較多。
因為 Redis 中命令執行的排隊機制,慢查詢會導致其他命令的級聯阻塞,所以當客戶端出現請求超時的時候,需要檢查該時間點是否有慢查詢,從而分析出由于慢查詢導致的命令級聯阻塞。
什么是慢查詢日志?
慢查詢日志是 Redis 服務端在命令執行前后計算每條命令的執行時長,當超過某個閾值是記錄下來的日志。日志中記錄了慢查詢發生的時間,還有執行時長、具體什么命令等信息,它可以用來幫助開發和運維人員定位系統中存在的慢查詢。
如何獲取慢查詢日志?
可以使用 slowlog get 命令獲取慢查詢日志,在 slowlog get 后面還可以加一個數字,用于指定獲取慢查詢日志的條數,比如,獲取 3 條慢查詢日志:
slowlog get 3
1) 1) (integer) 6107
2) (integer) 1616398930
3) (integer) 3109
4) 1) config
2) rewrite
2) 1) (integer) 6106
2) (integer) 1613701788
3) (integer) 36004
4) 1) flushall
3) 1) (integer) 6105
2) (integer) 1608722338
3) (integer) 20449
4) 1) scan
2) 0
3) MATCH
4) *comment*
5) COUNT
6) 10000
從上面的例子中,可以看出每一條慢查詢日志都有 4 個屬性組成:
唯一標識 ID 命令執行的時間戳命令執行時長執行的命名和參數如何獲取慢查詢日志的長度?
可以使用 slowlog len 命令獲取慢查詢日志的長度,比如:
slowlog len
(integer) 121
在上例中,當前 Redis 中有 121 條慢查詢日志。
如何清理慢查詢日志?
可以使用 slowlog reset 命令清理慢查詢日志,比如:
slowlog len
(integer) 121
slowlog reset
slowlog len
(integer) 0
怎么配置慢查詢的參數?
正如上面提到的,慢查詢需要如下兩個配置:
命令執行時長的指定閾值。存放慢查詢日志的條數。
Redis 對應提供了兩個參數:slowlog-log-slower-than 和 slowlog-max-len,接下來我們詳細介紹一下這兩個參數。
slowlog-log-slower-than
slowlog-log-slower-than 的作用是指定命令執行時長的閾值,執行命令的時長超過這個閾值時就會被記錄下來。它的單位是微秒(1 秒 = 1000 毫秒 = 1000000 微秒),默認是 10000 微秒。如果把 slowlog-log-slower-than 設置為 0,將會記錄所有命令到日志中。如果把 slowlog-log-slower-than 設置小于 0,將會不記錄任何命令到日志中。
在實際的生產環境中,需要根據 Redis 并發量來調整該配置。因為 Redis 采用單線程響應命令,如果命令執行時間在 1000 微秒以上,那么 Redis 最多可支撐 OPS 不到 1000,所以對于高并發場景的 Redis 建議設置為 1000 微秒。
slowlog-max-len
slowlog-max-len 的作用是指定慢查詢日志最多存儲的條數。實際上,Redis 使用了一個列表存放慢查詢日志,slowlog-max-len 就是這個列表的最大長度。當一個新的命令滿足滿足慢查詢條件時,被插入這個列表中。當慢查詢日志列表已經達到最大長度時,最早插入的那條命令將被從列表中移出。比如,slowlog-max-len 被設置為 10,當有第 11 條命令插入時,在列表中的第 1 條命令先被移出,然后再把第 11 條命令放入列表。
記錄慢查詢是 Redis 會對長命令進行截斷,不會大量占用大量內存。在實際的生產環境中,為了減緩慢查詢被移出的可能和更方便地定位慢查詢,建議將慢查詢日志的長度調整的大一些。比如可以設置為 1000 以上。
如何進行配置
在 Redis 中有兩個修改配置的方法:
修改 Redis 配置文件。比如,把 slowlog-log-slower-than 設置為 1000,slowlog-max-len 設置為 1200:
slowlog-log-slower-than 1000
slowlog-max-len 1200
使用 config set 命令動態修改。比如,還是把 slowlog-log-slower-than 設置為 1000,slowlog-max-len 設置為 1200:
config set slowlog-log-slower-than 1000
config set slowlog-max-len 1200
config rewrite
OK
如果要 Redis 把配置持久化到本地配置文件,需要執行 config rewrite 命令。
總結
慢查詢指的是命令執行時長比較長的查詢。通過 slowlog get 命令獲取慢查詢日志;通過 slowlog len 命令獲取慢查詢日志的長度;通過 slowlog reset 命令清理慢查詢日志。通過 slowlog-log-slower-than 配置命令執行時長的閾值;通過 slowlog-max-len 配置慢查詢日志最多存儲的條數
關于 redis 慢查詢指的是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
向 AI 問一下細節
丸趣 TV 網 – 提供最優質的資源集合!