2016-06-01 18 views
0

私はDistributed LockとRedisの初心者です。私はRedisがシングルスレッドサーバーだと聞いたことがあります。だから私の質問はなぜ我々はレディスが必要なのですか?例えば、第2のスレッド(クライアントBが開始)は、第1のスレッド(クライアントAが開始された)の動作が達成されるまで前のスレッドを中断しない。両方のスレッドが同じデータで作業しています。私は何かを欠場する必要があることを知っていた。親切に私を訂正するのを助けてください。ありがとう。Redisで分散ロックが必要な理由

答えて

1

私は、分散ロックはレアリス自体についてではないと考えています(本当にそのシングルスレッドかどうかは気にするべきではありません)。

「通常の」(分散されていない)ロックはクリアされますが、単一のJVMのマルチスレッドアプリケーションで動作します。

「分散型」という言葉は、多くのJVMのあるリソースへのアクセスを同期する方法を追加し、クリティカルセクションを実行するJVMは1つだけです。

ここで紹介したように、「SET」コマンドでロックを実装することは可能ですが、そのような実装の根本的な問題は、レディス自体の単一の障害点です。多くの独立したレディス・マシンの状態に基づいてロックを取得するためのRedlockアルゴリズムについて説明します。このうち、Redis自体がシングルスレッドであるのかマルチスレッドであるのかはまったく気にしません。

これだけです。 ほしいと思っています。

+0

ああ...記事を載せています。 '分散ロックは、異なるプロセスが相互に排他的な方法で共有リソースで動作する必要がある多くの環境で、非常に有用なプリミティブです。それは本当に '複数のプロセス'を述べました。 'Multiple threads'だけではありません。 –

+0

正確です。 DLを必要とする理由の例を以下に示します。そして、そのdbで動作するレポートを作成したいとし、2人のユーザーが同時にレポートを作成しようとすると、悪いことが起こることを知っています。さて、あなたのアプリがクラスタで実行されているので、どのマシン(データベースを保護しているか)に関係なく、一度に1つのレポートしか作成されないことを保証する必要があります。したがって、分散ロックがここで役立ちます。 –

+0

「単一インスタンスで実装を修正する」の部分で、単一インスタンスは何を意味しますか?これは、「マスタースレーブ」フェールオーバーパターンを意味しますか?ありがとう。 –

関連する問題