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つであるマスターワーカーアーキテクチャ

推薦する

ウェブサイトのコンテンツ構築と制作について考える

ユーザーのニーズは変化し続けます。検索エンジンは常に適応しています。今日のユーザーは、Web サイト...

4月の地方求人サイトの発展の軌跡:地方大学と地方企業の融合

今は4月ですが、卒業まであと2か月しかないため、多くの都市の大学生は就職活動に焦っています。現在、多...

Zhongdai.comは1ヶ月以内に倒産しました。参入障壁のないP2Pウェブサイトは心配です

劉愛林記者と季家鵬記者が北京から報告した。それから1か月も経たないうちに、Zhongdai.comは...

Baisiyun:「米国サンノゼ - プレミアム本土最適化 BGP」ラインの VPS の簡単な評価

Baisiyun は新しく設立された企業です。最初のリリースは、公式に提供される VPS である「米...

テンセントにとって、2018 年のゲーム業界にはどのような可能性があるのでしょうか?

テンセントは7年前に「汎エンターテインメント」という概念を提唱し、それ以来、文学、音楽、映画、テレビ...

入手可能: oplink-$24.5/L5420/16g メモリ/120g SSD/100m 無制限

oplink は 2006 年に登録され、AS40156 でヒューストンに独自のコンピュータ ルーム...

大手企業間の競争を背景に、国内パブリッククラウド市場が急成長

近年、5G、人工知能、デジタルツインなどの技術の継続的な発展により、モノのインターネットの潮流がさら...

chicagovps-低価格ラインはもう存在しない可能性があり、過去のプロモーションは整理されています

皆さんご存知のとおり、colorcrossingはしばらく前からchicagovps.netを買収し...

SEOキーワード選定戦略と具体的な方法

SEO 作業は商品キーワードを中心に行われるため、キーワードの選択は SEO 作業全体を効果的に実行...

A5とchinaz.comの提出物の違いを詳しく見る

草の根レベルで、私はウェブサイトを作る趣味があり、自分のウェブサイトを有名にして、もっと多くの人に知...

Apple、iMessageを解放するツールをリリース

Appleは最近、ユーザーがiOSと他のスマートフォンをより簡単に切り替えられるようにする新しいツー...

#CheapVPS# cloudcone - $11/年/KVM/256m メモリ/10g ハードドライブ/1T トラフィック/ロサンゼルス

Cloudcone はブラックフライデー中にプロモーションを行っており、HostCat の小さな掲示...

ソーシャル メディア運用: ソーシャル マーケティングの 7 つの大罪

140語の要約:ソーシャル メディアで成功するには、避けるべきよくある間違いがいくつかあります。これ...

ウェブサイト計画の簡単な SEO 入門

ウェブサイト プランナーとして、SEO の知識を少し学ぶと、ウェブサイトを計画したり宣伝したりすると...

Zhihui Huayun: 一般的なウェブセキュリティの脆弱性の共有

インターネット時代では、データと情報が急速に変化しており、それに伴い、ネットワークのセキュリティを危...