Redis トランザクションにおける MULTI と EXEC の魔法の組み合わせ

目次

導入

Redis トランザクションの簡単な紹介

MULTI: ビジネスへの扉を開く

EXEC: トランザクションがコミットされた時刻

DISCARD: 取引キャンセルの救世主

ベスト プラクティス: MULTI と EXEC を組み合わせたアプリケーション


導入

Redis のトランザクションは、複数のコマンドをパッケージ化してアトミックに実行するメカニズムを開発者に提供する強力で柔軟な機能です。コア コマンド MULTI および EXEC と補助コマンド DISCARD が合わせて Redis トランザクションの基礎を形成します。

Redis トランザクションの簡単な紹介

Redis トランザクションを使用すると、開発者は一連の Redis コマンドをアトミ​​ック操作ユニットにパッケージ化し、これらのコマンドがすべて正常に実行されるか、すべてが失敗するかを確認できます。このアトミック実行の機能は、分散システムにおいてデータの一貫性と信頼性を確保するために特に重要です。

MULTI: ビジネスへの扉を開く

MULTI は Redis トランザクションのエントリコマンドであり、その機能はトランザクションを開始することです。 MULTI コマンドが呼び出されると、後続のすべての Redis コマンドはトランザクション キューに入れられますが、すぐには実行されません。これにより、開発者は複数のコマンドをパッケージ化し、確実にアトミックに実行できるようになります。

MULTI
SET key1 value1
SET key2 value2

上記の例では、2 つのコマンド SET key1 value1SET key2 value2 がトランザクション キューに配置されます。

EXEC: トランザクションがコミットされた時刻

EXEC は Redis トランザクションの主要なコマンドであり、その機能はトランザクション キュー内のすべてのコマンドを実行し、それらをアトミックな操作として Redis サーバーに送信することです。 EXEC が呼び出されると、Redis はトランザクション キュー内のコマンドを順番に実行します。

MULTI
SET key1 value1
SET key2 value2
EXEC

上記の例では、2 つのコマンド SET key1 value1SET key2 value2 は、EXEC が呼び出されるまで実際には実行されません。トランザクションの実行中にエラーが発生した場合、データの整合性を維持するためにトランザクション全体がロールバックされます。

DISCARD: 取引キャンセルの救世主

DISCARD は Redis トランザクションの救世主であり、その機能はトランザクションをキャンセルし、キューに入れられたすべてのコマンドを破棄することです。 は、トランザクション内のコマンドに問題がある場合、または MULTI と の実行の間にトランザクションをキャンセルする必要がある場合に有効な方法です。 EXEC という意味です。 DISCARD

MULTI
SET key1 value1
SET key2 value2
DISCARD

上記の例では、 が呼び出されたときに 2 つのコマンド SET key1 value1SET key2 value2 がクリアされ、全体 取引はキャンセルされました。 DISCARD

ベスト プラクティス: MULTI と EXEC を組み合わせたアプリケーション

Jedis jedis = new Jedis("localhost", 6379);
Transaction transaction = jedis.multi();

try {
    // 事务中的命令
    transaction.set("key1", "value1");
    transaction.set("key2", "value2");
    
    // 提交事务
    List<Object> result = transaction.exec();
    
    // 处理事务执行结果
    if (result == null) {
        // 事务执行失败,执行回滚或其他操作
        transaction.discard();
    } else {
        // 事务执行成功,继续其他业务逻辑
    }
} catch (Exception e) {
    // 处理异常,执行回滚或其他操作
    transaction.discard();
} finally {
    jedis.close();
}

Java では、MULTIEXEC の組み合わせと例外処理メカニズムを使用して、より複雑なトランザクション操作を実装できます。トランザクション内の各コマンドはアトミックに実行され、データの一貫性と信頼性が保証されます。

おすすめ

転載: blog.csdn.net/weixin_43728884/article/details/134771665