這篇文章主要介紹“Redis中的慢查詢是什么”,在日常操作中,相信很多人在Redis中的慢查詢是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Redis中的慢查詢是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在其它Redis中的文章中已經介紹過了一個Redis命令在執行時要分4個步驟:
發送命令
命令排隊
命令執行
返回結果
也就是如下圖所示:
備注:上面介紹的慢查詢指的是步驟3的時間,也就是Redis命令的執行時間,所以在Redis中慢查詢的時間和客戶端的超時時間根本不是一回事。
慢查詢的配置參數
要想使用Redis中的慢查詢功能,我們要明白兩個事情:
怎么設置超時參數
記錄的日志目錄
在Redis中我們可以使用
showlog-log-slower-than
參數來設置命令的超時時間,并且這個超時時間的單位是微妙(1秒=1000毫秒=1000000微妙),
showlog-log-slower-than
參數有自己的默認值,默認為10000。也就是如果我們不修改Redis中任何參數時,當Redis中的執行命令的時間超過10000微妙時,Redis就會將該條命令的信息記錄到日志中。
備注:如果當參數showlog-log-slower-than=0時,Redis則會記錄所有執行的命令,如果當showlog-log-slower-than<0時,Redis則不會記錄任何執行過的命令。
下面我們看一下Redis中慢查詢的日志存儲的位置。實際上在Redis中,當有慢查詢記錄命令的時候,并不是將信息存儲在某個真正的目錄中,而是將信息存儲到了一個列表中維護。而showlog-max-len參數,就是該列表的最大長度。當慢查詢中的記錄數超過了showlog-max-len參數時,那么Redis會將該列表中最先存儲的信息刪除。
下面我們了解一下怎么設置上面提到的兩個參數。在Redis中修改上面配置參數有兩種辦法:
直接修改Redis中的配置文件
可以使用config set命令動態修改參數
下面我們了解一下怎么操作慢查詢中的列表。
1.獲取慢查詢日志
slowlog get [n]
在Redis中slowlog命令的列表中主要記錄了4方面的信息,它們分別是慢查詢日志的標識id、發生時間、命令耗時、執行命令、等信息。
2.獲取慢查詢日志列表當前的長度
slowlog len
3.慢查詢日志重置
slowlog reset
下面我們看一下我們在使用Redis中慢查詢功能的注意事項。
slow-max-len參數:因為當Redis中慢查詢的信息過多時,Redis會清除之前的慢查詢列表中的信息,所以為了必免Redis有頻繁清除過多慢查詢信息的可能,slow-max-len參數相對來說可以設置的大一點,例如1000左右。
slowlog-log-slower-than參數:因為該參數默認為10毫秒,也就是當Redis中的命令超過10毫秒時,Redis會被認為該命令為慢查詢。雖然10毫秒相對來說比較快,但在某些情況,我們可能會在將slowlog-log-slower-than參數調的小一些。例如大并發的時候。因為按照評測當Redis中的命令超過1毫秒時,那么當前Redis最多可支撐的QPS不到1000,所以在大并發時,我們可以將slowlog-log-slower-than參數調整為1毫秒。
因為慢查詢記錄的是命令的執行時間,而不包括命令的排隊和網絡傳輸時間。所以客戶端命令的時間會大于命令的實際執行時間。因為Redis單線程的架構及命令的排隊機制,所以慢查詢也可能會導致命令的阻塞。
因為慢查詢的信息是被記錄到了Redis中的一個列表中,并且是先進先出的。所以當Reids中的慢查詢過多時,曾經記錄的慢查詢信息則會被刪除。所以為了保證我們的慢查詢信息不會丟失,我們可以不定期的執行slow get命令將信息持久化存儲。
到此,關于“Redis中的慢查詢是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。