Redisのパイプラインについてまとめます。通常の処理方式ではRedis Serverが応答を返してから次のコマンドを発行しますが、パイプラインを使用すると応答を待たずに処理をしますので、RTT(Round Trip Time)の観点で有利になり高速な処理を実現できます。
前提
公式ドキュメント
参考になる公式ドキュメントを以下に示します。
動作確認済環境
- Rocky Linux 8.6
- Redis 5.0.3
PIPELINE
概要
以下のように3つの値を編集する操作を例に挙げます。
127.0.0.1:6379> SET key01 value01 OK 127.0.0.1:6379> SET key02 value02 OK 127.0.0.1:6379> SET key03 value03 OK 127.0.0.1:6379>
このような操作の場合、「SET key01 value01」コマンドの「OK」応答が返ってから、次のコマンドが発行できます。これをシーケンス図で表すと以下のようになります。
他方、Redis ClientとRedis Server間をパイプで接続すると、以下のように複数コマンドをまとめて発行する事ができます。このような操作の場合、「OK」応答を待たずに次にコマンドを発行できるので、待ち時間(正確に言えばRound Trip Time)の観点で有利になります。
パイプライン
パイプラインによるコマンド操作をするには、Redis ClientとRedis Serverをパイプで接続します。コマンドを複数発行する場合は、改行コード\R\Nで区切ってください。
Linuxでncコマンドを使って操作する例は以下のようになります。
echo "SET key01 value01 SET key02 value02 SET key03 value03" | nc -C localhost 6379
この操作の実行ログは以下のようになります。
[root@linux010 ~]# echo "SET key01 value01 > SET key02 value02 > SET key03 value03" | nc -C localhost 6379 +OK +OK +OK