Redis Shell使用(redis-cli,redis-server,redis-benchmark)

Redis提供了redis-cli、redis-server、redis-benchmark等Shell工具。它們雖然比較簡(jiǎn)單,但是麻雀雖小五臟俱全,有時(shí)可以很巧妙地解決一些問(wèn)題。

1.1 redis-cli

  • -r
    -r(repeat)選項(xiàng)代表將命令執(zhí)行多次
  • -i
    -i(interval)選項(xiàng)代表每隔幾秒執(zhí)行一次命令,但是-i選項(xiàng)必須和-r選項(xiàng)一起使用,下面的操作會(huì)每隔1秒執(zhí)行一次ping命令,一共執(zhí)行5次
    $ redis-cli -r 5 -i 1 ping
    PONG
    PONG
    PONG
    PONG
    PONG
    
  • -x
    -x選項(xiàng)代表從標(biāo)準(zhǔn)輸入(stdin)讀取數(shù)據(jù)作為redis-cli的最后一個(gè)參數(shù),例如下面的操作會(huì)將字符串world作為set hello的值:
    $ echo "world" | redis-cli -x set hello
    OK
    
  • -h,-p,-a
    IP、端口號(hào)、密碼
  • --scan和--pattern
    --scan選項(xiàng)和--pattern選項(xiàng)用于掃描指定模式的鍵,相當(dāng)于使用scan命令
  • --bigkeys
    --bigkeys選項(xiàng)使用scan命令對(duì)Redis的鍵進(jìn)行采樣,從中找到內(nèi)存占用比
    較大的鍵值,這些鍵可能是系統(tǒng)的瓶頸。
  • --latency
    latency有三個(gè)選項(xiàng),分別是--latency、--latency-history、--latency-dist。它們都可以檢測(cè)網(wǎng)絡(luò)延遲,對(duì)于Redis的開(kāi)發(fā)和運(yùn)維非常有幫助
  • --stat
    --stat選項(xiàng)可以實(shí)時(shí)獲取Redis的重要統(tǒng)計(jì)信息,雖然info命令中的統(tǒng)計(jì)信息更全,但是能實(shí)時(shí)看到一些增量的數(shù)據(jù)(例如requests)對(duì)于Redis的運(yùn)維還是有一定幫助的,如下所示
redis-cli --stat
------- data ------ --------------------- load -------------------- - child -
keys    mem   clients blocked requests           connections
2451959 3.43G 1162    0       7426132839 (+0)    1337356
2451958 3.42G 1162    0       7426133645 (+806)  1337356 …
2452182 3.43G 1161    0       7426150275 (+1303) 1337356

1.2 redis-server

redis-server除了啟動(dòng)Redis外,還有一個(gè)--test-memory選項(xiàng)。redis-server --test-memory可以用來(lái)檢測(cè)當(dāng)前操作系統(tǒng)能否穩(wěn)定地分配指定容量的內(nèi)存給Redis,通過(guò)這種檢測(cè)可以有效避免因?yàn)閮?nèi)存問(wèn)題造成Redis崩潰,例如下面操作檢測(cè)當(dāng)前操作系統(tǒng)能否提供1G的內(nèi)存給Redis:

redis-server --test-memory 1024

整個(gè)內(nèi)存檢測(cè)的時(shí)間比較長(zhǎng)。當(dāng)輸出passed this test時(shí)說(shuō)明內(nèi)存檢測(cè)完畢,最后會(huì)提示--test-memory只是簡(jiǎn)單檢測(cè),如果有質(zhì)疑可以使用更加專業(yè)的內(nèi)存檢測(cè)工具:

Please keep the test running several minutes per GB of memory.
Also check http:// www.memtest86.com/ and http:// pyropus.ca/software/memtester/
................ 忽略檢測(cè)細(xì)節(jié) ................
Your memory passed this test.
Please if you are still in doubt use the following two tools:
1) memtest86: http:// www.memtest86.com/
2) memtester: http:// pyropus.ca/software/memtester/

通常無(wú)需每次開(kāi)啟Redis實(shí)例時(shí)都執(zhí)行--test-memory選項(xiàng),該功能更偏向于調(diào)試和測(cè)試,例如,想快速占滿機(jī)器內(nèi)存做一些極端條件的測(cè)試,這個(gè)功能是一個(gè)不錯(cuò)的選擇。

1.3 redis-benchmark

redis-benchmark可以為Redis做基準(zhǔn)性能測(cè)試,它提供了很多選項(xiàng)幫助開(kāi)發(fā)和運(yùn)維人員測(cè)試Redis的相關(guān)性能,下面分別介紹這些選項(xiàng)。

  • -c
    -c(clients)選項(xiàng)代表客戶端的并發(fā)數(shù)量(默認(rèn)是50)。
  • -n<requests>
    -n(num)選項(xiàng)代表客戶端請(qǐng)求總量(默認(rèn)是100000)。
  redis-benchmark -c 100 -n 20000

  ====== GET ======
  20000 requests completed in 0.27 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1
  99.11% <= 1 milliseconds
  100.00% <= 1 milliseconds
   73529.41 requests per second
  • -r
    在一個(gè)空的Redis上執(zhí)行了redis-benchmark會(huì)發(fā)現(xiàn)只有3個(gè)鍵:
127.0.0.1:6379> dbsize
(integer) 3
127.0.0.1:6379> keys *
1) "counter:__rand_int__"
2) "mylist"
3) "key:__rand_int__"

如果想向Redis插入更多的鍵,可以執(zhí)行使用-r(random)選項(xiàng),可以向
Redis插入更多隨機(jī)的鍵。

$ redis-benchmark -c 100 -n 20000 -r 10000

-r選項(xiàng)會(huì)在key、counter鍵上加一個(gè)12位的后綴,-r10000代表只對(duì)后四位做隨機(jī)處理(-r不是隨機(jī)數(shù)的個(gè)數(shù))。例如上面操作后,key的數(shù)量和結(jié)果結(jié)構(gòu)如下:

127.0.0.1:6379> dbsize
(integer) 18641
127.0.0.1:6379> scan 0
1) "14336"
2) 1) "key:000000004580"
2) "key:000000004519"
…
10) "key:000000002113"
  • -P
    -P選項(xiàng)代表每個(gè)請(qǐng)求pipeline的數(shù)據(jù)量(默認(rèn)為1)。
  • -k<boolean>
    -k選項(xiàng)代表客戶端是否使用keepalive,1為使用,0為不使用,默認(rèn)值為
    1。
  • -t
    -t選項(xiàng)可以對(duì)指定命令進(jìn)行基準(zhǔn)測(cè)試。
redis-benchmark -t get,set -q
SET: 98619.32 requests per second
GET: 97560.98 requests per second
  • --csv
    --csv選項(xiàng)會(huì)將結(jié)果按照csv格式輸出,便于后續(xù)處理,如導(dǎo)出到Excel等。
redis-benchmark -t get,set --csv
"SET","81300.81"
"GET","79051.38"
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Redis Shell Redis提供了redis-cli、redis-server、redis-benchmar...
    linuxzw閱讀 493評(píng)論 0 5
  • 3.2Redis Shell Redis提供了redis-cli、redis-server、redis-bench...
    super_pcm閱讀 153評(píng)論 0 0
  • 可執(zhí)行文件 作用redis-server 啟動(dòng)redisredis-cli redis命令行工具re...
    hexm01閱讀 332評(píng)論 0 0
  • ·慢查詢分析:通過(guò)慢查詢分析,找到有問(wèn)題的命令進(jìn)行優(yōu)化。·Redis Shell:功能強(qiáng)大的Redis Shell...
    何何與呵呵呵閱讀 818評(píng)論 0 1
  • ·慢查詢分析:通過(guò)慢查詢分析,找到有問(wèn)題的命令進(jìn)行優(yōu)化。 ·Redis Shell:功能強(qiáng)大的Redis Shel...
    xuxw閱讀 176評(píng)論 0 0

友情鏈接更多精彩內(nèi)容