如何通過(guò)慢查詢找到阻塞的命令?針對(duì)這個(gè)問(wèn)題,今天小編總結(jié)這篇有關(guān)redis阻塞的文章,希望幫助更多想學(xué)習(xí)redis的同學(xué)找到更加簡(jiǎn)單易行的辦法。
蟠龍網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)公司2013年開(kāi)創(chuàng)至今到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
和MySQL一樣,Redis也有慢查詢記錄。當(dāng)命令的執(zhí)行時(shí)間超過(guò)設(shè)定的值時(shí),該命令就會(huì)記錄到慢查詢列表中。通過(guò)慢查詢,我們可以改進(jìn)我們的程序。防止redis阻塞。
配置
慢查詢的配置參數(shù)有兩個(gè):
slowlog-log-slower-than
slowlog-max-len
slowlog-log-slower-than用來(lái)設(shè)定一個(gè)閾值,單位為微妙,默認(rèn)值為10000,即10毫秒。
當(dāng)值設(shè)置為小于0時(shí),任何命令都不會(huì)記錄;
當(dāng)值等于0時(shí),會(huì)記錄所有的命令。
slowlog-max-len表示最多記錄的條數(shù),默認(rèn)為128,例如將它設(shè)為10,當(dāng)有第11條慢查詢插入的話,那么隊(duì)頭的數(shù)據(jù)就會(huì)出列。
這兩個(gè)配置還支持動(dòng)態(tài)配置,當(dāng)項(xiàng)目剛剛開(kāi)始時(shí),訪問(wèn)量不是很大時(shí),可以將slow-log-slower-than的值設(shè)大些。當(dāng)訪問(wèn)量越來(lái)越大的時(shí)候,可能就需要將其值改小點(diǎn)。但我們不想停止redis服務(wù),那么就可以動(dòng)態(tài)的修改該配置。
127.0.0.1:6379> config set slowlog-log-slower-than 1000 OK # 在線修改配置 127.0.0.1:6379> config rewrite OK # 將修改的配置持久化到配置文件中
運(yùn)維建議:當(dāng)訪問(wèn)量大的時(shí)候,一般我們建議將slowlog-log-slower-than設(shè)置為1000,或更小。當(dāng)這個(gè)值為1000時(shí),表示redis最多能支持1000個(gè)并發(fā)。
慢查詢查看
redis的慢查詢查看和mysql有區(qū)別,redis查看的話有專門的命令。
獲取慢查詢?nèi)罩?/strong>
slowlog get [n],n表示條數(shù),默認(rèn)為10
127.0.0.1:6379> slowlog get 1) 1) (integer) 18004 2) (integer) 1589424642 3) (integer) 50 4) 1) "slowlog" 2) "get" 5) "127.0.0.1:58364" 6) "" 2) 1) (integer) 18003 2) (integer) 1589423805 3) (integer) 47 4) 1) "slowlog" 2) "get" 5) "127.0.0.1:58364" 6) "" ……
第一個(gè)參數(shù)是日志標(biāo)識(shí)id號(hào)
第二個(gè)為發(fā)生時(shí)間戳
第三個(gè)為命令執(zhí)行的時(shí)間(微妙)
最后一個(gè)是命令及參數(shù)。
獲取慢查詢的長(zhǎng)度
slowlog len
127.0.0.1:6379> slowlog len (integer) 128
清空慢查詢列表
127.0.0.1:6379> slowlog reset OK
將慢查詢?nèi)罩境志没絤ysql中
因?yàn)閞edis的長(zhǎng)度有限制,所以在慢查詢很多的情況下,會(huì)出現(xiàn)丟失的情況。我們可以定時(shí)去redis取出慢查詢記錄列表,將其持久化到mysql中,防止這種情況發(fā)生。
偽代碼如下:
while (true) { $slowlen = $redis->slowlog('len'); $slowlogs = $redis->slowlog('get',$slowlen); $insSql = "INSERT INTO slowlog(exec_time,run_time,command) VALUES"; if (is_array($slowlogs) && count($slowlogs)) { foreach ($slowlogs as $slowlog) { $execTime = $slowlog[2]; $runTime = $slowlog[1]; $command = implode(' ', $slowlog[3]); $insSql .= "('$execTime', '$runTime','$command'),"; } $flag = mysqli_query($mysqli, substr($insSql, 0, -1)); if ($flag) { $redis->slowlog('reset'); } } unsleep(10000); }
以上就是通過(guò)慢查詢找到阻塞的命令的方法介紹,詳細(xì)使用情況還得要大家自己使用過(guò)才能知道具體要領(lǐng)。如果想閱讀更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前題目:通過(guò)慢查詢找到阻塞的命令
轉(zhuǎn)載來(lái)于:http://aaarwkj.com/article2/psohoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、營(yíng)銷型網(wǎng)站建設(shè)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)