這篇文章將為大家詳細(xì)講解有關(guān)redis慢查詢指的是什么,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

redis慢查詢指的是命令執(zhí)行時(shí)長比較長的查詢,其慢查詢?nèi)罩揪褪荝edis服務(wù)端在命令執(zhí)行前后計(jì)算每條命令的執(zhí)行時(shí)長,當(dāng)超過某個(gè)閾值是記錄下來的日志,日志中記錄了慢查詢發(fā)生的時(shí)間,還有執(zhí)行時(shí)長、具體什么命令等信息。
慢查詢,顧名思義就是比較慢的查詢,但是究竟是哪里慢呢?首先,我們了解一下Redis命令執(zhí)行的整個(gè)過程:

在慢查詢的定義中,統(tǒng)計(jì)比較慢的時(shí)間段指的是命令執(zhí)行這個(gè)步驟。沒有慢查詢,并不表示客戶端沒有超時(shí)問題,有可能網(wǎng)絡(luò)傳輸有延遲,也有可能排隊(duì)的命令比較多。
因?yàn)镽edis中命令執(zhí)行的排隊(duì)機(jī)制,慢查詢會導(dǎo)致其他命令的級聯(lián)阻塞,所以當(dāng)客戶端出現(xiàn)請求超時(shí)的時(shí)候,需要檢查該時(shí)間點(diǎn)是否有慢查詢,從而分析出由于慢查詢導(dǎo)致的命令級聯(lián)阻塞。
可以使用slowlog get命令獲取慢查詢?nèi)罩荆?code>slowlog get后面還可以加一個(gè)數(shù)字,用于指定獲取慢查詢?nèi)罩镜臈l數(shù),比如,獲取3條慢查詢?nèi)罩荆?/p>
> 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"從上面的例子中,可以看出每一條慢查詢?nèi)罩径加?個(gè)屬性組成:
可以使用slowlog len命令獲取慢查詢?nèi)罩镜拈L度,比如:
> slowlog len (integer) 121
在上例中,當(dāng)前Redis中有121條慢查詢?nèi)罩尽?/p>
正如上面提到的,慢查詢需要如下兩個(gè)配置:
Redis對應(yīng)提供了兩個(gè)參數(shù):slowlog-log-slower-than和slowlog-max-len,接下來我們詳細(xì)介紹一下這兩個(gè)參數(shù)。
slowlog-log-slower-than的作用是指定命令執(zhí)行時(shí)長的閾值,執(zhí)行命令的時(shí)長超過這個(gè)閾值時(shí)就會被記錄下來。它的單位是微秒(1秒 = 1000毫秒 = 1000000微秒),默認(rèn)是10000微秒。如果把slowlog-log-slower-than設(shè)置為0,將會記錄所有命令到日志中。如果把slowlog-log-slower-than設(shè)置小于0,將會不記錄任何命令到日志中。
在實(shí)際的生產(chǎn)環(huán)境中,需要根據(jù)Redis并發(fā)量來調(diào)整該配置。因?yàn)镽edis采用單線程響應(yīng)命令,如果命令執(zhí)行時(shí)間在1000微秒以上,那么Redis最多可支撐OPS不到1000,所以對于高并發(fā)場景的Redis建議設(shè)置為1000微秒。
slowlog-max-len的作用是指定慢查詢?nèi)罩咀疃啻鎯Φ臈l數(shù)。實(shí)際上,Redis使用了一個(gè)列表存放慢查詢?nèi)罩荆瑂lowlog-max-len就是這個(gè)列表的較大長度。當(dāng)一個(gè)新的命令滿足滿足慢查詢條件時(shí),被插入這個(gè)列表中。當(dāng)慢查詢?nèi)罩玖斜硪呀?jīng)達(dá)到較大長度時(shí),最早插入的那條命令將被從列表中移出。比如,slowlog-max-len被設(shè)置為10,當(dāng)有第11條命令插入時(shí),在列表中的第1條命令先被移出,然后再把第11條命令放入列表。
記錄慢查詢是Redis會對長命令進(jìn)行截?cái)啵粫罅空加么罅績?nèi)存。在實(shí)際的生產(chǎn)環(huán)境中,為了減緩慢查詢被移出的可能和更方便地定位慢查詢,建議將慢查詢?nèi)罩镜拈L度調(diào)整的大一些。比如可以設(shè)置為1000以上。
在Redis中有兩個(gè)修改配置的方法:
slowlog-log-slower-than 1000 slowlog-max-len 1200
config set命令動態(tài)修改。比如,還是把slowlog-log-slower-than設(shè)置為1000,slowlog-max-len設(shè)置為1200:> config set slowlog-log-slower-than 1000 OK > config set slowlog-max-len 1200 OK > config rewrite OK
如果要Redis把配置持久化到本地配置文件,需要執(zhí)行config rewrite命令。
慢查詢指的是命令執(zhí)行時(shí)長比較長的查詢。通過slowlog get命令獲取慢查詢?nèi)罩荆煌ㄟ^slowlog len命令獲取慢查詢?nèi)罩镜拈L度;通過slowlog reset命令清理慢查詢?nèi)罩尽Mㄟ^slowlog-log-slower-than配置命令執(zhí)行時(shí)長的閾值;通過slowlog-max-len配置慢查詢?nèi)罩咀疃啻鎯Φ臈l數(shù)
關(guān)于redis慢查詢指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
網(wǎng)站欄目:redis慢查詢指的是什么-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://chinadenli.net/article12/diipgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)建站、全網(wǎng)營銷推廣、網(wǎng)站維護(hù)、微信公眾號、服務(wù)器托管、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容