この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 34174|答える: 5

[.NET Core] .NET CoreはRedisに基づく分散ロック原理解析を実装しています

[リンクをコピー]
掲載地 2020/09/22 9:17:22 | | | |
ビジネスシナリオでは、商品在庫や同じファイルなどの同時操作は許可されず、プログラムアプリケーションは複数のサーバーに展開されます。
[実際の戦闘] ASP.NET コアはRedis分散ロックフラッシュセールをベースにしています
https://www.itsvse.com/thread-9397-1-1.html

以前に書かれたzkベースの分散ロックは以下の通りです。

.net/c# Zookeeper分散ロック実装 [ソースコード]
https://www.itsvse.com/thread-4651-1-1.html

この記事を読むために知っておくべきことも:

ボラタイル vs. インターロック vs. ロック
https://www.itsvse.com/thread-5023-1-1.html

C# 並列計算 Parallel.For&Parallel.For
https://www.itsvse.com/thread-3671-1-1.html

.NET CoreはRedisに基づく分散ロックを実装しています原理は、REDISのSETNXコマンドを呼び出すことですキーがすでに存在している場合、SETNXコマンドは何もしません。 コマンドは設定が成功すると1、失敗すると0を返します。

ハイパーリンクのログインが見えます。

新しい.NET Core 3.1コンソールプロジェクトを作成し、StackExchange.Redisの参照を追加し、以下のようにnugetコマンドを使用します:

ライブラリのStringSetメソッドをStackExchange.Redisのソースコードから呼び出すと、StringSetメソッドはGetStringSetMessageのプライベートメソッドを呼び出し、列挙値によって異なるsetコマンドを実行します。コードは以下の通りです。

SETNXコマンドを2000回実行し、プログラムへの並列テストコールを行います。このコールは2回に分けて実行されます。キーのキャッシュ有効性は5秒間、つまり鍵は5秒後に自動的に解放され、ロックは解除されます。

コードは以下の通りです:


ご覧の通り、合計2回の成功した挿入と1998年の失敗はまさに予想通りで、レンダリングは以下の通りです:


現時点では、ロックはまだ解除されていません。
(終わり)









先の:「\bin\roslyn\csc.exe」の一部の回避策を見つけられませんでした。
次に:EF Core Series 2はOnModelCreatingをカプセル化し、反射を用いてインデックスを作成するなどを備えています
 地主| 掲載地 2020/09/26 15:37:52 |
テスト123
掲載地 2020/11/20 11:18:31 |
コンテナを展開する際にマルチスレッド環境とマルチインスタンス環境がある場合、このハンドリングに問題はありますか?
 地主| 掲載地 2020/11/20 11:29:44 |
秋月明 2020-11-20 11:18 投稿
コンテナを展開する際にマルチスレッド環境とマルチインスタンス環境がある場合、このハンドリングに問題はありますか? ...

マルチインスタンスとはマルチスレッドを意味し、ソースコードではマルチスレッドがredisを呼び出し、1つのスレッドだけがロックを得ます
掲載地 2022/03/22 14:32:40 |
応援、応援
掲載地 2022/03/23 11:15:30 |
これが良いことだと学びましょう@
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com