Redisコマンド操作中国語マ...login
Redisコマンド操作中国語マニュアル
著者:php.cn  更新時間:2022-04-12 14:07:28

Redis パイプライン テクノロジー


Redis は、クライアント/サーバー モデルと要求/応答プロトコルに基づく TCP サービスです。これは、通常、リクエストは次の手順に従うことを意味します:

  • クライアントはクエリリクエストをサーバーに送信し、通常はブロッキングモードでソケットの戻りをリッスンし、サーバーの応答を待ちます。

  • サーバーはコマンドを処理し、結果をクライアントに返します。


Redis パイプライン テクノロジー

Redis パイプライン テクノロジーを使用すると、サーバーが応答しない場合でも、クライアントはサーバーにリクエストを送信し続け、最終的にはすべてのサーバーからの応答を一度に読み取ることができます。

インスタンス

Redis パイプラインを表示するには、redis インスタンスを開始して次のコマンドを入力するだけです:

$(echo -en "PING\r\n SET w3ckey redis\r\nGET w3ckey\r\nINCR visitor\r\nINCR visitor\r\nINCR visitor\r\n"; sleep 10) | nc localhost 6379

+PONG
+OK
redis
:1
:2
:3

上記の例では、PING コマンドを使用して、redis サービスが利用可能かどうかを確認します。 その後、w3ckey の値を redis に設定し、w3ckey の値を取得して訪問者を 3 回増加させます。

返された結果では、これらのコマンドが一度に Redis サービスに送信され、最終的にすべてのサーバーの応答を一度に読み取っていることがわかります


パイプライン テクノロジーの利点

パイプライン テクノロジーの最も重要な利点は、これにより、Redis サービスのパフォーマンスの効率が向上します。

いくつかのテストデータ

次のテストでは、パイプライン技術の機能をサポートする Redis の Ruby クライアントを使用して、パイプライン技術の速度向上効果をテストします。

require 'rubygems' 
require 'redis'
def bench(descr) 
start = Time.now 
yield 
puts "#{descr} #{Time.now-start} seconds" 
end
def without_pipelining 
r = Redis.new 
10000.times { 
	r.ping 
} 
end
def with_pipelining 
r = Redis.new 
r.pipelined { 
	10000.times { 
		r.ping 
	} 
} 
end
bench("without pipelining") { 
	without_pipelining 
} 
bench("with pipelining") { 
	with_pipelining 
}

Mac OS 上で上記の簡単なスクリプトを実行したデータ

without pipelining 1.185238 seconds 
with pipelining 0.250783 seconds

ご覧のとおり、パイプラインをオープンした後、速度効率が 5 倍向上しました。

PHP中国語ウェブサイト