ホームページ  >  記事  >  データベース  >  Redis はスレッドセーフですか?

Redis はスレッドセーフですか?

(*-*)浩
(*-*)浩オリジナル
2019-06-18 10:46:327379ブラウズ

Redis はシングルスレッドです:

シングルスレッドとは、1 つのスレッド (したがって同時実行の安全性を考慮する必要はありません)、つまり 1 つのスレッドを使用するネットワーク要求モジュールを指します。すべてのネットワーク リクエストを処理します。他のモジュールは依然として複数のスレッドを使用します。

Redis はスレッドセーフですか?

スレッド セーフティ (推奨学習: Redis ビデオ チュートリアル)

#Redis は実際にスレッド クロージャの概念を採用しており、タスクを 1 つのスレッドに囲み、スレッドの安全性の問題を自然に回避します。ただし、複数の Redis 操作に依存する複合操作の場合、ロックは依然として必要であり、分散される場合があります。

redis が高速に実行できる理由:

(1) ほとんどのリクエストは純粋なメモリ操作です (非常に高速です)

(2)不要なコンテキストの切り替えと競合状態を回避するための単一スレッド

(3) ノンブロッキング IO - IO 多重化 (IO 多重化とは何ですか?)

IO 多重化再利用には 3 つの方法があります: 選択、ポーリング、そしてエポール。 select と poll はスレッド セーフではありませんが、epoll はスレッド セーフであることに注意してください。 epoll での読み取り、書き込み、クローズ、接続はすべてイベントに変換され、epoll の多重化機能を使用して io で時間を無駄にすることはありません。これら 3 つの条件、特に最初の条件は、リクエストの場合、互いに独立していません。いずれも時間がかかり、単一スレッドを使用した場合のスループットとパフォーマンスは想像に難くありません。 Redis は特殊なシナリオに適した技術的ソリューションを選択したと言うべきです。

Redis を使用する利点は何ですか?

#HashMap と同様、データがメモリに保存されるため高速です。HashMap の利点は、検索と操作の時間計算量が O(1)

## であることです。 # 豊富なサポート データ型は文字列、リスト、セット、ソートセット、ハッシュをサポートします

トランザクションをサポートし、操作はアトミックです。いわゆるアトミックとは、データに対するすべての変更が実行されるか実行されないかを意味します。すべて実行

豊富な機能: キャッシュ、メッセージング、キーによる有効期限の設定に使用でき、有効期限が切れると自動的に削除されます

Redis 関連の技術的な詳細については、記事については、
Redis データベース使用入門チュートリアル

列を参照して学習してください。

以上がRedis はスレッドセーフですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。