W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Redis 的慢查詢?nèi)罩竟δ苡糜谟涗泩?zhí)行時(shí)間超過(guò)給定時(shí)長(zhǎng)的命令請(qǐng)求, 用戶可以通過(guò)這個(gè)功能產(chǎn)生的日志來(lái)監(jiān)視和優(yōu)化查詢速度。
服務(wù)器配置有兩個(gè)和慢查詢?nèi)罩鞠嚓P(guān)的選項(xiàng):
slowlog-log-slower-than
?選項(xiàng)指定執(zhí)行時(shí)間超過(guò)多少微秒(1
?秒等于?1,000,000
?微秒)的命令請(qǐng)求會(huì)被記錄到日志上。
舉個(gè)例子, 如果這個(gè)選項(xiàng)的值為?100
?, 那么執(zhí)行時(shí)間超過(guò)?100
?微秒的命令就會(huì)被記錄到慢查詢?nèi)罩荆?如果這個(gè)選項(xiàng)的值為?500
?, 那么執(zhí)行時(shí)間超過(guò)?500
?微秒的命令就會(huì)被記錄到慢查詢?nèi)罩荆?諸如此類。
slowlog-max-len
?選項(xiàng)指定服務(wù)器最多保存多少條慢查詢?nèi)罩尽?/p>
服務(wù)器使用先進(jìn)先出的方式保存多條慢查詢?nèi)罩荆?當(dāng)服務(wù)器儲(chǔ)存的慢查詢?nèi)罩緮?shù)量等于?slowlog-max-len
?選項(xiàng)的值時(shí), 服務(wù)器在添加一條新的慢查詢?nèi)罩局埃?會(huì)先將最舊的一條慢查詢?nèi)罩緞h除。
舉個(gè)例子, 如果服務(wù)器?slowlog-max-len
?的值為?100
?, 并且假設(shè)服務(wù)器已經(jīng)儲(chǔ)存了?100
?條慢查詢?nèi)罩荆?那么如果服務(wù)器打算添加一條新日志的話, 它就必須先刪除目前保存的最舊的那條日志, 然后再添加新日志。
讓我們來(lái)看一個(gè)慢查詢?nèi)罩竟δ艿睦樱?首先用?CONFIG_SET?命令將?slowlog-log-slower-than
?選項(xiàng)的值設(shè)為?0
?微秒, 這樣 Redis 服務(wù)器執(zhí)行的任何命令都會(huì)被記錄到慢查詢?nèi)罩局校?接著將?slowlog-max-len
?選項(xiàng)的值設(shè)為?5
?, 讓服務(wù)器最多只保存?5
?條慢查詢?nèi)罩荆?/p>
redis> CONFIG SET slowlog-log-slower-than 0
OK
redis> CONFIG SET slowlog-max-len 5
OK
接著, 我們用客戶端發(fā)送幾條命令請(qǐng)求:
redis> SET msg "hello world"
OK
redis> SET number 10086
OK
redis> SET database "Redis"
OK
然后使用?SLOWLOG GET?命令查看服務(wù)器所保存的慢查詢?nèi)罩荆?/p>
redis> SLOWLOG GET
1) 1) (integer) 4 # 日志的唯一標(biāo)識(shí)符(uid)
2) (integer) 1378781447 # 命令執(zhí)行時(shí)的 UNIX 時(shí)間戳
3) (integer) 13 # 命令執(zhí)行的時(shí)長(zhǎng),以微秒計(jì)算
4) 1) "SET" # 命令以及命令參數(shù)
2) "database"
3) "Redis"
2) 1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
2) "number"
3) "10086"
3) 1) (integer) 2
2) (integer) 1378781436
3) (integer) 18
4) 1) "SET"
2) "msg"
3) "hello world"
4) 1) (integer) 1
2) (integer) 1378781425
3) (integer) 11
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "5"
5) 1) (integer) 0
2) (integer) 1378781415
3) (integer) 53
4) 1) "CONFIG"
2) "SET"
3) "slowlog-log-slower-than"
4) "0"
如果這時(shí)再執(zhí)行一條?SLOWLOG GET?命令, 那么我們將看到, 上一次執(zhí)行的?SLOWLOG GET?命令已經(jīng)被記錄到了慢查詢?nèi)罩局校?而最舊的、編號(hào)為?0
?的慢查詢?nèi)罩疽呀?jīng)被刪除, 服務(wù)器的慢查詢?nèi)罩緮?shù)量仍然為?5
?條:
redis> SLOWLOG GET
1) 1) (integer) 5
2) (integer) 1378781521
3) (integer) 61
4) 1) "SLOWLOG"
2) "GET"
2) 1) (integer) 4
2) (integer) 1378781447
3) (integer) 13
4) 1) "SET"
2) "database"
3) "Redis"
3) 1) (integer) 3
2) (integer) 1378781439
3) (integer) 10
4) 1) "SET"
2) "number"
3) "10086"
4) 1) (integer) 2
2) (integer) 1378781436
3) (integer) 18
4) 1) "SET"
2) "msg"
3) "hello world"
5) 1) (integer) 1
2) (integer) 1378781425
3) (integer) 11
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "5"
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: