Redisson 分散ロック ソースコード 8: MultiLock のロックとロック解除

Redisson 分散ロック ソースコード 8: MultiLock のロックとロック解除

[[409055]]

序文

Redis に基づく Redisson 分散インターロック RedissonMultiLock オブジェクトは、複数の RLock オブジェクトをインターロックに関連付けることができ、各 RLock オブジェクト インスタンスは異なる Redisson インスタンスから取得できます。

もちろん公式サイトの紹介です。具体的には何ですか?連動するMultiLockの使い方とソースコードを見てみましょう!

1マルチロックの使用

公式ドキュメントによると、ここでの Redisson クライアントは異なる場合があります。もちろん、一般的な仕事では、クライアントが必要ないとは言いません。

2 ロック

MultiLock ロックについて読む前に、通常のロックに関する関連記事を読んでおく必要があります。

ソースコードエントリ: org.redisson.RedissonMultiLock#lock()

デフォルトのタイムアウトのleaseTimeは設定されていないため、-1になります。

このメソッドは長すぎるので、分割して読んでみましょう。

  1. 基本待機時間 baseWaitTime = ロック数 * 1500、ここでは 4500 ミリ秒です。
  2. leasingTime == -1なのでwaitTime = baseWaitTimeとなり、4500になります。
  3. while (true) は tryLock を呼び出して、成功するまでロックします。

waitTime = 4500、leaseTime = -1、unit = MILLISECONDS のパラメータを指定して tryLock メソッドを呼び出します。

tryLock のロジックを見てみましょう。

leasingTime != -1 が満たされていないため、この部分は直接スキップされます。

waitTime != -1 条件が満たされ、remainTime = 4500、lockWaitTime = 4500 になります。

したがって、failedLocksLimit() メソッドは直接 0 を返します。これは、すべてのロックが正常に取得される必要があることを意味します。

重要なポイントは次のとおりです。

すべてのロックを横断し、1 つずつロックします。

ロックのロジックは再入可能ロックと変わりません。したがって、Lua スクリプトは分析されません。

上記はtryLockがロックされた後の結果です。

ロックが正常に取得された場合、成功したロックは acquireLocks コレクションに格納されます。

ロックに失敗した場合はfailedLocksLimitを判断する必要があります。ここでは 0 なので、正常にロックされたセット acquireLocks 内のすべてのロックが直接解放され、正常にロックされたセットがクリアされてイテレータが復元されます。

各ロックの後に、残りのロック時間 remainTime が更新されます。 remainTime が 0 以下の場合、ロックがタイムアウトしたことを意味し、直接 false が返されます。

これにより、外部の while (true) ロジックが実行され、RedissonMultiLock#tryLock が再度実行されます。

3 ロック解除

ロックのロジックを読んだ後では、ロックの解除が理解しやすくなります。

トラバースしてロックを直接解除するだけです。 lock.unlockAsync() は、呼び出される RedissonBaseLock#unlockAsync() メソッドです。

4 結論

私の理解では、図は次のようになります。

一般的には、key1、key2、key3...keyN を List コレクションに入れて、すべてが成功するまで反復処理してロックします。ロックを解除するときは、ロックを再度通過してロックを解除します。

この記事はWeChatの公開アカウント「Programmer Xiaohang」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、プログラマーXiaohangの公式アカウントまでご連絡ください。

<<:  F5: エッジ コンピューティングはデジタル バンキングのエクスペリエンスをどのように変えるのでしょうか?

>>:  分散システムアーキテクチャの1つであるマスターワーカーアーキテクチャ

推薦する

クールなサイト評価: ダークなウェブサイトデザイン 22 選

ウェブサイトのデザインでは明るい色が主流ですが、ミステリアスな雰囲気を際立たせ、控えめな高級感を醸し...

モバイルウェブサイト構築ソフトウェアとは何ですか?テクノロジーを知らなくても、携帯電話でウェブサイトを構築できます

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますインターネ...

SEO最適化とプロモーションにおけるTKDの書き方

月収10万元の起業の夢を実現するミニプログラム起業支援プランSEO 最適化、トラフィックの転換、プロ...

Kafka ソースコード実装メカニズムのクライアントキャッシュアーキテクチャの図解説明

みなさんこんにちは。Hua Zaiです。またお会いできて嬉しいです。今日は主に「Kafka クライア...

SEO の 3 つのステップ: SEO をより効果的にする

SEO 最適化の質によって、サイトが検索エンジンからどれだけのトラフィックを獲得できるかが決まります...

4 か月で実現した最適化の奇跡はなぜ機能したのでしょうか?

最近は毎日柔らかい記事を書いていますが、視点が硬直していて気づかないこともあるかもしれません。今日は...

中国サイバースペース管理局:噂との戦いは意図的なものと意図的でないものに分ける必要がある

ネット世論の監視機能を十分に発揮させることと、ネット上の噂を取り締まることは矛盾しない。違法性の境界...

パンデミック中のパブリッククラウドの成功事例4つ

企業が従業員や顧客に新たな体験を提供するために活用しているパブリック クラウドほど、新型コロナウイル...

ウェブマスターネットワークからの毎日のレポート:タオバオがキャッシュバックモデルを調整、シャオミがセットトップボックスをテスト

1. タオバオは現金還元を中止し、ポイント還元を推進。タオバオの顧客還元モデルに関する新たな考え方タ...

厳しい競争環境におけるタオバオ顧客ウェブサイトのキーワード戦略の分析例

タオバオアフィリエイトの経験がある多くの友人は、現金タオバオアフィリエイト間の激しい競争が悪質なレベ...

新たなブランドプロモーションチャネルの模索:モバイルアプリ

【ポイント】 掲示板や新種のSNS、Weiboなどのソーシャルメディアなどの伝統的なインターネットの...

ヒューマニスティックマーケティング:インターネットマーケティングで無視できないサポートポイント

今日最も人気のある業界といえば、それはオンライン マーケティングでしょう。毎日上げ潮のように押し寄せ...

ボストン・グローブ紙が PTC を 2018 年の「最も働きがいのある会社」に選出

PTC (NASDAQ: PTC) は、ボストン グローブ紙の第 11 回年次従業員調査で、マサチュ...

shockhosting: 日本の東京データセンターにある 1Gbps 帯域幅の VPS の簡単なレビュー

shockhosting は最近、solusvm 管理と 1Gbps 帯域幅へのアクセスを使用して、...