redisリストから一度にpopを複数出す

2450 ワード

この問題を解決するには、Redisのpipeline機能を使用する必要があります.これにより、複数のコマンドを1つのネットワークリクエストでサーバに送信し、デフォルトで1つのトランザクションで実行できます.1つのトランザクションは中断されません.トランザクションが開始され、複数のコマンドが実行されてから終了するまでのプロセスは、原子操作と見なすことができます.
pipelineの使い方は以下の通りです.
	$pipe = $redis->multi(Redis::PIPELINE);
	$pipe->lRange($lpushmqkey,0, $loop_num-1);
	$pipe->lTrim($lpushmqkey,$loop_num,-1);
	$data = $pipe->exec();

コードがexec()に実行されると、本当にサーバに接続され、実行するコマンドをトランザクションで一度に実行します.リストを返します.返されるリストは2つあり、0番目は結果を含むリストで、1番目はltrimの返される結果です.
パラメータの説明:Redis::MULTIまたはRedis::PIPELINE.デフォルトはRedis::MULTI Redis::MULTI:複数のアクションを1つのトランザクションとして実行Redis::PIPELINE:(複数の)コマンドを簡単に、より迅速にサーバに送信できますが、原子的な保証はありません.