次のコラム Redis チュートリアル では、Redis トランザクションとパイプラインについて紹介します。困っている友人の役に立てば幸いです。
Redis トランザクションは一度に複数のコマンドを実行でき、次の 3 つの重要なコマンドがあります。保証:バッチ操作は、EXEC コマンドを送信する前にキュー キャッシュに入れられます。
トランザクションは、開始から実行まで次の 3 つの段階を経ます:- EXEC コマンドを受信した後、トランザクションの実行を開始します。トランザクション内のいずれかのコマンドが実行に失敗した場合でも、残りのコマンドは引き続き実行されます。
- トランザクション実行プロセス中、他のクライアントによって送信されたコマンド要求は、トランザクション実行コマンド シーケンスに挿入されません。
トランザクションの開始。
- キューに参加するコマンド。
- トランザクションを実行します。
MULTI トランザクションを開始し、複数のコマンドをトランザクションにキューに入れ、最後に EXEC コマンドによってトランザクションがトリガーされます。 , トランザクション内のすべてのコマンドを一緒に実行します:
1. トランザクションの実行
2. watch
1 つ (または複数) のキーを監視します。トランザクションが実行される前に、この (またはこれらの) キーが他のコマンドによって変更された場合、トランザクションは中断されます。3. 破棄
トランザクションをキャンセルして譲渡します。 up 実行 トランザクション ブロック内のすべてのコマンド。
3.pipleline1. 設定サポートトランザクション
template.setEnableTransactionSupport(true);<br>2. コード:
##
redisTemplate.opsForValue().set("aaa", 321); redisTemplate.watch("aaa"); redisTemplate.multi(); redisTemplate.opsForValue().set("aaa", 123); redisTemplate.opsForValue().set("bbb", 123); redisTemplate.exec();<br>
jedis コード:
Map<string> map = new HashMap(); map.put("aaa", 111); map.put("bbb", 222); map.put("ccc", 3333); List list = redisTemplate.executePipelined(new RedisCallback<object>() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { redisConnection.openPipeline(); for (Map.Entry<string> mapEntry : map.entrySet()) { redisConnection.set(redisTemplate.getKeySerializer().serialize(mapEntry.getKey()), redisTemplate.getValueSerializer().serialize(mapEntry.getValue())); } return null; } }, redisTemplate.getValueSerializer()); System.out.println(redisUtil.get("aaa")); System.out.println(redisUtil.get("bbb")); System.out.println(redisUtil.get("ccc"));</string></object></string><br>
以上がRedis トランザクションとパイプラインについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。