この記事では、Redis に関する関連知識を提供します。主にコンシステント ハッシュとハッシュ スロットに関連する問題を紹介します。拡張が発生したり、ノードが失われたりすると、多くの問題が発生します。データ移行の問題、一貫したハッシュとハッシュ スロットを使用すると、この問題を回避できます。
推奨学習: Redis 学習チュートリアル
x 個のキャッシュ デバイスがある場合、どれにデータを配置するかを決定します。デバイスにキャッシュするときは、キー %x を使用できますが、拡張が発生したりノードが失われた場合は、キー %(x±y) が必要になります。これにより、多くのデータ移行の問題が発生します。一貫したハッシュとハッシュ スロットにより、この問題を回避できます。この問題。 。
一貫性のあるハッシュの原理
通常のハッシュはサーバー数の残りであり、一貫性のあるハッシュは特定の数 (2^32) の残りであり、数によって変化することはありません。まず、サーバーの IP またはその他の一意の識別子の残りを取得して、値を取得します。この値は、ハッシュ リング上のサーバーの位置です。次に、サーバーに配置されるオブジェクトをハッシュして、値を取得します。ハッシュを対応するサーバーに置き換えて値を見つけます。その場所にサーバーがない場合は、次の場所のサーバーが保存可能なサーバーを見つけられるかどうかを確認します。
1. リング空間
一般的に使用されるハッシュ アルゴリズムに従って、対応するキーを 2 の 32 乗ノード、つまり 0 の空間にハッシュします。 ~ (2/32)-1 デジタル空間で。これが尻尾を噛んで閉ループを形成していると想像できます。
2. サーバーをリングにハッシュする
リングが配置されたので、サーバーをリングに配置する必要があります。これはサーバーの IP アドレスに基づいて実行でき、番号とその他の一意の識別子を取得し、ハッシュしてリング上に置きます。
3. データの保存と取得
データをサーバーに置く必要がある場合、最初にハッシュを計算する必要があります。データの値を取得し、余りを取り、その余りの値がリング上に対応するサーバーがある場合はそのまま置き、ない場合は逆方向に検索します。
したがって、最終的に data1 は redis1 に存在し、data2 は redis2 に存在します。データを取得するときも同様の処理を行い、キーのハッシュ値を計算し、同じルールに従って格納されているサーバーを取得します。
4. サーバーの削除と追加
Redis ノードがハングアップした場合、他のノードのデータはまだ存在しており、元のノードのデータも残ります。データは次のノードに再配布されます。
新しいサーバー RedisNeo が環境に追加されると、RedisNeo はハッシュ アルゴリズムを通じてリングにマッピングされ、時計回りの移行ルールに従って、Redis2 と RedisNeo の間の以前のハッシュ値を持つデータが RedisNeo に移行されます (以下) 図では、RedisNeo は Redis2) の隣にあり、他のオブジェクトは元の保存場所を維持しています。ノードの追加と削除の分析を通じて、コンシステント ハッシュ アルゴリズムはデータ移行を最小限に抑えながら単調性を維持します。このようなアルゴリズムは分散クラスターに非常に適しており、大量のデータ移行を回避し、サーバーへの負荷を軽減します。
したがって、redisNeo が追加された後、data3 は redisNeo に入ります。
5. バランス
これまでのところ、整合性ハッシュは完了したと考えられますが、まだ解決する必要がある問題が 1 つあり、それはバランスです。以下の図から、サーバー ノードの数が比較的少ない場合、必然的に 1 つのノードに大量のデータが集中するという問題が発生することがわかります。 [2,10] の間のハッシュ値を持つものだけがノード 10 に移動し、他のものはすべてノード 10 に移動するため、ノード 1 に対するプレッシャーは明らかに無限大です。ノード 1. このデータ スキューの問題を解決するために、コンシステント ハッシュ アルゴリズムでは仮想ノード メカニズムを導入しています。つまり、各サービス ノードに対して複数のハッシュが計算され、各計算結果の位置に 1 つのサービス ノードが配置されます。仮想ノード。具体的な方法としては、最初に各物理ノードに関連付けられた仮想ノードの数を決定し、その数を IP またはホスト名の後に追加することが考えられますが、同時に、仮想ノードのマッピングを除いて、データ配置アルゴリズムは変更されません。実際のノードに。
ハッシュ スロット
ハッシュ スロットは Redis クラスター クラスター スキームで使用されます。Redis クラスター クラスターは一貫したハッシュ スキームを使用しませんが、データ シャーディングでハッシュを使用します。スロットはデータの保存と読み取りに使用されます。 Redis クラスターは、データの保存とデータの読み取りにデータ シャードのハッシュ スロットを使用します。 Redis クラスターには合計 2^14 (16384) 個のスロットがあり、すべてのマスター ノードには 0 ~ 1000 などのスロット領域があり、スロット数は移行できます。マスターノードのスレーブノードはスロットを割り当てず、読み取り権限のみを持ちます。ただし、コードでは、redis クラスターはマスター ノード上で読み取りおよび書き込み操作を実行しますが、読み取り用のスレーブ ノードと書き込み用のマスター ノードではないことに注意してください。 Redis クラスターが初めて作成されるとき、マスター ノードによって 16384 個のスロットが均等に分散されます。
コンシステント ハッシュと比較すると、拡大および縮小する場合はハッシュ スロットを手動で割り当てる必要があり、マスター ノードを削除する場合は、そのスレーブ ノードとハッシュ スロットを他のマスターに与える必要があります。スロットは CRC-16 (キー) 384 の値に基づいて、どのスロットに属するかを決定します。
推奨される学習: Redis チュートリアル
以上がRedis キャッシュ学習一貫性のあるハッシュとハッシュ スロットの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Redisは、高速、汎用性、豊富なデータ構造のために際立っています。 1)Redisは、文字列、リスト、コレクション、ハッシュなどのデータ構造をサポートし、コレクションを注文します。 2)メモリを介してデータを保存し、RDBとAOFの持続性をサポートします。 3)Redis 6.0から始めて、マルチスレッドI/O操作が導入されました。これにより、高い並行性シナリオでパフォーマンスが向上しました。

redisisclassifiedsaNosqldatabasebasesakey-valuedataModelinsteaded ofthetraditionaldatabasemodel.itoffersspeedand andffficability、makingidealforreal-timeaplications andcaching、butmaynotbesbesutable fors cenariois requiring datientiantientioniity

Redisは、データをキャッシュし、分散ロックとデータの持続性を実装することにより、アプリケーションのパフォーマンスとスケーラビリティを向上させます。 1)キャッシュデータ:Redisを使用して頻繁にアクセスしたデータをキャッシュして、データアクセス速度を向上させます。 2)分散ロック:Redisを使用して分散ロックを実装して、分散環境での操作のセキュリティを確保します。 3)データの持続性:データの損失を防ぐために、RDBおよびAOFメカニズムを介してデータセキュリティを確保します。

Redisのデータモデルと構造には、5つの主要なタイプが含まれます。1。文字列:テキストまたはバイナリデータの保存に使用され、原子操作をサポートします。 2。リスト:キューとスタックに適した注文された要素コレクション。 3.セット:順序付けられていない一意の要素セット、セット操作をサポートします。 4。注文セット(sortedset):ランキングに適したスコアを持つ一意の要素セット。 5。ハッシュテーブル(ハッシュ):オブジェクトの保存に適したキー価値ペアのコレクション。

Redisのデータベースメソッドには、メモリ内データベースとキー価値ストレージが含まれます。 1)Redisはデータをメモリに保存し、速く読み取り、書き込みます。 2)キー価値のペアを使用してデータを保存し、キャッシュやNOSQLデータベースに適したリスト、コレクション、ハッシュテーブル、注文コレクションなどの複雑なデータ構造をサポートします。

Redisは、高速パフォーマンス、リッチデータ構造、高可用性とスケーラビリティ、持続性能力、幅広いエコシステムサポートを提供するため、強力なデータベースソリューションです。 1)非常に速いパフォーマンス:Redisのデータはメモリに保存され、非常に速い読み取り速度と書き込み速度が高く、高い並行性と低レイテンシアプリケーションに適しています。 2)豊富なデータ構造:さまざまなシナリオに適したリスト、コレクションなど、複数のデータ型をサポートします。 3)高可用性とスケーラビリティ:マスタースレーブの複製とクラスターモードをサポートして、高可用性と水平スケーラビリティを実現します。 4)持続性とデータセキュリティ:データの整合性と信頼性を確保するために、データの持続性がRDBとAOFを通じて達成されます。 5)幅広い生態系とコミュニティのサポート:巨大なエコシステムとアクティブなコミュニティにより、

Redisの主な機能には、速度、柔軟性、豊富なデータ構造のサポートが含まれます。 1)速度:Redisはメモリ内データベースであり、読み取り操作はほとんど瞬間的で、キャッシュとセッション管理に適しています。 2)柔軟性:複雑なデータ処理に適した文字列、リスト、コレクションなど、複数のデータ構造をサポートします。 3)データ構造のサポート:さまざまなビジネスニーズに適した文字列、リスト、コレクション、ハッシュテーブルなどを提供します。

Redisのコア関数は、高性能のメモリ内データストレージおよび処理システムです。 1)高速データアクセス:Redisはデータをメモリに保存し、マイクロ秒レベルの読み取り速度と書き込み速度を提供します。 2)豊富なデータ構造:文字列、リスト、コレクションなどをサポートし、さまざまなアプリケーションシナリオに適応します。 3)永続性:RDBとAOFを介してディスクにデータを持続します。 4)サブスクリプションを公開:メッセージキューまたはリアルタイム通信システムで使用できます。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
