Redis Shellのredis-cli,redis-server,redis-benchmark,Pipeline詳細(九)

7917 ワード

Redisは、redis-cli、redis-server、redis-benchmarkなどのshellツールを提供します.
一、redis-cli詳細
1、-r
-r(repeat)オプションは、コマンドを複数回実行することを意味します.pingを3回実行する場合:
bogon:~ ww$ redis-cli -r 3 ping
PONG
PONG
PONG
bogon:~ ww$ 

2、-i
-i(interval)オプションは、数秒おきにコマンドを実行することを意味しますが、-iは-rと一緒に使用する必要があります.
//  1     ping,    
bogon:~ ww$ redis-cli -r 5 -i 1 ping
PONG
PONG
PONG
PONG
PONG
bogon:~ ww$ 

注意:-iの単位は秒で、ミリ秒はサポートされていません.10ミリ秒おきに実行したい場合は、-i 0.01を使用します.
infoコマンド:Redisサーバに関する様々な情報と統計値を返します.
使用方法:redis-cli info
3、-x
標準入力から読み出したデータをredis-cliの最後のパラメータとして表します.たとえば、次のようにします.
bogon:~ bjhl$ echo 'world' |redis-cli -x set wao
OK
bogon:~ bjhl$ redis-cli 
127.0.0.1:6379> get wao
"world
" 127.0.0.1:6379>

4、-c
Redis Clusterノードを接続するときに使用する、-cオプションはmovedとaskの異常を防止します.
5、-a
Redisがパスワードを設定している場合は、-a(auth)オプションを使用できます.このオプションがあれば、手動でauthコマンドを入力する必要はありません.
6、--scanと--pattern
--scanオプションと--patternオプションは、指定したモードのキーをスキャンするために使用されます.scanコマンドを使用するのと同じです.
7、--slave
このオプションは、現在のクライアントを現在のredisノードのスレーブノードにシミュレートし、現在のredisノードの更新操作を取得するために使用できます.このオプションを適切に使用すると、現在redisノードに接続されている更新操作の一部を記録できます.これらの更新操作は、実際にビジネスを開発する際に必要なデータである可能性があります.
8、--rdb
このオプションは、RedisインスタンスにRDB永続化ファイルの生成と送信を要求し、ローカルに保存します.永続化されたファイルの定期的なバックアップを使用できます.
9、--pipe
このオプションは、コマンドをRedis通信プロトコル定義のデータフォーマットにカプセル化し、Redisに一括送信して実行するために使用します.
10、--bigkeys
このオプションはscanコマンドを使用してRedisのキーをサンプリングし、メモリが比較的大きなキー値を占めていることを見出します.これらのキーはシステムのボトルネックになる可能性があります.
bogon:~ ww$ redis-cli --bigkeys
# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.  You can use -i 0.1 to sleep 0.1 sec
# per 100 SCAN commands (not usually needed).

[00.00%] Biggest string found so far 'he' with 6 bytes
[00.00%] Biggest string found so far 'sl' with 12 bytes
[00.00%] Biggest list   found so far 'mylist' with 32298 items

-------- summary -------

Sampled 9 keys in the keyspace!
Total key length in bytes is 59 (avg len 6.56)

Biggest string found 'sl' has 12 bytes
Biggest   list found 'mylist' has 32298 items

8 strings with 39 bytes (88.89% of keys, avg size 4.88)
1 lists with 32298 items (11.11% of keys, avg size 32298.00)
0 sets with 0 members (00.00% of keys, avg size 0.00)
0 hashs with 0 fields (00.00% of keys, avg size 0.00)
0 zsets with 0 members (00.00% of keys, avg size 0.00)
0 streams with 0 entries (00.00% of keys, avg size 0.00)
bogon:~ ww$ 

11、--eval
このオプションは、Luaスクリプトの実行に使用します.
12、--latency
latencyには、--latency、--latency-history、--latency-distの3つのオプションがあります.ネットワーク遅延を検出することができ、Redisの開発と運用に非常に役立ちます.
1)--latency
このオプションは、クライアントAとRedisが1つのルームAにあり、クライアントBが別のルームBにあるなど、クライアントからターゲットRedisへのネットワーク遅延をテストすることができ、このコマンドは、Bの平均ネットワーク遅延が少し高いことを示す.
bogon:~ ww$ redis-cli -h 127.0.0.1 -p 6379 --latency 
min: 0, max: 1, avg: 0.25 (424 samples)

上記のコードでは、Bがこのコマンドを使用している場合、avgはAがこのコマンドを使用している値よりも高いはずです.距離が遠いので
2)--latency-history
--latencyの実行結果は1つしかありません.遅延情報を期間別に理解するには、--latency-historyオプションを使用します.
redis-cli -h 127.0.0.1 --latency-history
redis-cli -h 127.0.0.1 -p 6379 --latency-history
min: 0, max: 2, avg: 0.27 (1301 samples) -- 15.01 seconds range
min: 0, max: 2, avg: 0.27 (1301 samples) -- 15.00 seconds range
.
.
.
min: 0, max: 1, avg: 0.28 (1308 samples) -- 15.00 seconds range

15秒ごとに出力され、-iパラメータで時間間隔を制御できることがわかります
例えば、redis-cli-h 127.0.0.1-p 6379--latency-history-i 1//1秒に1回出力
3)--latency-dist
このオプションは、統計グラフとしてコンソールから遅延統計を出力します.
13、--stat
このオプションでは、infoコマンドの統計はより完全ですが、requestsなどの増分データがredisの運用次元に役立つことをリアルタイムで確認できます.
14、--rawと--no-raw
--no-rawオプションは、コマンドの戻り結果が元のフォーマットでなければならないことを要求します.--rawは正反対で、戻り時にフォーマットされた結果です.
bogon:~ ww$ redis-cli --no-raw get he
"\xe5\x91\xb5\xe5\x91\xb5"
bogon:~ ww$ redis-cli --raw get he
  
bogon:~ ww$ 

二、redis-server詳細
redis-serverは、Redisを起動するほか、現在のオペレーティングシステムが指定した容量のメモリをRedisに安定的に割り当てることができるかどうかを検出するためのtest-memoryオプションがあります.この検出により、メモリの問題によるredisのクラッシュを回避できます.
例えば、redis-server--test-memoey 1024;現在のシステムがredisに1 Gのメモリを提供できるかどうかを検出します.
この機能は、デバッグとテストに偏っています.例えば、機械のメモリをすばやく満たして極端なテストをしたいです.この機能はいい選択です.
三、redis-benchmark詳細
redis-benchmarkはRedisのベンチマーク性能テストを行うことができ、開発者とメンテナンス担当者がRedisの関連性能をテストするのに多くのオプションを提供します.
1、-c
-c(clients)オプションは、クライアントの同時実行数を表します(デフォルトは50です).
2、-n
-n(num)オプションは、クライアント要求総量(デフォルトは100,000)を表します.
たとえば、redis-benchmark-c 100-n 20000は、100人のクライアントの同僚を代表してredisを要求し、合計20000回実行します.redis-benchmarkは、さまざまなデータ構造のコマンドをテストし、パフォーマンス指標を与えます.
//                
====== GET ======
  20000 requests completed in 0.34 seconds
  100 parallel clients
  3 bytes payload
  keep alive: 1

73.86% <= 1 milliseconds
99.93% <= 2 milliseconds
100.00% <= 2 milliseconds
58479.53 requests per second

コマンドを実行した後、上記のようにgetコマンドをテストし、1回に20000個のリクエストを実行し、0.34秒で完了し、1回のリクエストデータ量は3バイト、73.86%<=1ミリ秒であり、Redisは毎秒58479.53回のgeリクエストを実行することができる.
3、-q
-qオプションは、redis-benchmarkのrequests per second情報のみを表示します.たとえば、次のようにします.
bogon:password ww$ redis-benchmark -c 100 -n 20000 -q
PING_INLINE: 69930.07 requests per second
PING_BULK: 53333.33 requests per second
SET: 58823.53 requests per second
GET: 60790.27 requests per second
INCR: 71174.38 requests per second
LPUSH: 69204.15 requests per second
RPUSH: 68965.52 requests per second
LPOP: 68259.38 requests per second
RPOP: 69686.41 requests per second
SADD: 68965.52 requests per second
HSET: 71174.38 requests per second
SPOP: 62305.29 requests per second
LPUSH (needed to benchmark LRANGE): 68728.52 requests per second
LRANGE_100 (first 100 elements): 17167.38 requests per second
LRANGE_300 (first 300 elements): 8041.82 requests per second
LRANGE_500 (first 450 elements): 5625.88 requests per second
LRANGE_600 (first 600 elements): 4013.65 requests per second
MSET (10 keys): 53050.40 requests per second

4、-r
空のRedis上でredis-benchmarkを実行すると、4つのキーしか見つかりません.
127.0.0.1:6379> keys *

1) "myset:__rand_int__"

2) "key:__rand_int__"

3) "mylist"

4) "counter:__rand_int__"

Redisにより多くのキーを挿入する場合は、-r(randon)オプションを使用します.redisにより多くのキーを挿入できます
注意:-r後のパラメータは乱数の個数ではありません.例えばredis-benchmark-r 10000はkey,counter,mysetキーの後に12ビットの接尾辞を付けます.-rは後4ビットだけをランダムにします.
5、-p
-pオプションは各pipelineのデータ量を表します(デフォルトは1)
6、-t 
-tオプションは、指定したコマンドに対してデータムテストを行うことができます.
bogon:~ ww$ redis-benchmark -t get,set -q
SET: 64516.13 requests per second
GET: 61728.39 requests per second
bogon:~ ww$ 

7、-k
このオプションは、クライアントがkeepaliveを使用できるかどうかを表し、1は使用、0は使用せず、デフォルト値は1です.
8、--csv
このオプションでは、結果がcsv形式で出力され、Excelへのエクスポートなど、後続の処理が容易になります.
bogon:~ ww$ redis-benchmark -t get,set --csv
"SET","65659.88"
"GET","61236.99"
bogon:~ ww$ 

四、Pipeline詳細
Redisクライアントが1つのコマンドを送信するには、4つのプロセスがあります.1:コマンドを送信し、2:コマンドキュー、3:コマンド実行、4:結果を返します.
このうち1と4をRound Trip Time(RTT,往復時間)と呼ぶ.
Redisは一括操作コマンドを提供し、RTTを効果的に節約したが、ほとんどのコマンドでは一括操作をサポートしていないため、n回のRTTを消費する必要があり、Pipeline(流水線)メカニズムはこの問題を改善することができ、1組のRedisコマンドを組み立てることができ、1回のRTTを通じてRedisに伝送し、結果を順番にクライアントに返し、プロセス全体で1回のRTTを消費するだけである.
redis-cliの--pipeオプションは実際にPipelineメカニズムを使用します.
例えば、echo-en'*3r$3rSETr$3rkeyr$5rvaluer'|redis-cli--pipe
オリジナルバッチコマンドとPipelineの比較
  • 原生ロットコマンドは原子であり、Pipelineは非原子の
  • である.
  • オリジナルバッチコマンドは、複数のkeyに対応するコマンドであり、Pipelineは複数のコマンド
  • をサポートする.
  • オリジナルバッチコマンドはRedisサービス側がサポートする実装であり、Pipelineはサービス側とクライアントの共同実装を必要とする.

  • 注意:Pipelineは使いやすいが、組み立てるたびにコマンドを節制しないわけにはいかない.そうしないと、一度にPipelineを組み立てるデータの量が大きすぎて、クライアントの待ち時間が増える一方で、ネットワークがブロックされる.一度に多数のコマンドを含むPipelineを複数の小さなPipelineに分割して完了できます.