ホームページ  >  記事  >  データベース  >  Redisのデータ構造とは何ですか?

Redisのデータ構造とは何ですか?

PHPz
PHPz転載
2023-05-28 10:16:291133ブラウズ

Redis は、高性能のキー/値データベースです。 Redis の出現により、memcached などのキー値ストレージの欠点が大幅に補われ、状況によってはリレーショナル データベースに対して非常に優れた補完的な役割を果たすことができます。

Redisのデータ構造とは何ですか?

1. String

文字列型は Redis の最も基本的なデータ構造です。まず、キーは文字列型で、その他のいくつかの構造はこれは文字列型に基づいて構築されているため、文字列型は他の 4 つのデータ構造を学習するための基礎を設定できます。文字列タイプは実際には文字列 (単純な文字列、複雑な文字列 (xml、json)、数値 (整数、浮動小数点数)、バイナリ (画像、音声、ビデオ)) にすることができますが、最大値は 512M を超えることはできません。

利用シナリオ: キャッシュ機能: 文字列の最も古典的な利用シナリオ。redis はキャッシュ層、Mysql はストレージ層、リクエストデータのほとんどは redis から取得されます。redis には高度なサポート機能があるためです。通常、キャッシュにより読み取りと書き込みが高速化され、バックエンドの負荷が軽減されます。 (なぜ Redis が高い同時実行性をサポートする特徴を持つのかについては、次の記事で説明します)。カウンタ: 多くのアプリケーションでは、カウントの基本ツールとして Redis が使用されており、高速なカウントとクエリ キャッシュ機能を実装でき、ワン ステップでデータを他のデータ ソースに転送できます。動画再生カウント システムの中核コンポーネントは Redis で、動画再生数をカウントするために使用されます。共有セッション: 負荷分散を考慮して、分散サービスはユーザー情報へのアクセスをさまざまなサーバーに分散します。ユーザーは、アクセスを更新するために再度ログインする必要がある場合があります。この問題を回避するには、redis を使用してユーザー セッションを集中管理できます。モードでは、redis の高可用性とスケーラビリティが確保されている限り、各ユーザーの更新またはログイン情報のクエリは redis から直接取得されます。速度制限: セキュリティ上の理由から、ユーザーはログインするたびに携帯電話の認証コードを入力する必要があります。SMS インターフェイスへの頻繁なアクセスを防ぐために、ユーザーが 1 分間に認証コードを取得する頻度が制限されます。

2. ハッシュ

redis では、ハッシュ タイプはキー自体と、value={{field1,value1},……fieldN などのキーと値のペアの構造を指します。 ,valueN}}

ハッシュ構造は文字列のシリアル化よりも直感的で、更新操作に便利なため、情報のキャッシュに適しています。そのため、ユーザー情報管理などによく利用されますが、リレーショナルデータベースとはハッシュの種類が異なり、ハッシュの種類がスパースであるのに対し、リレーショナルデータベースは完全に構造化されており、複雑なリレーショナルクエリを実行でき、redis複雑なリレーショナル クエリをシミュレートするには、開発が難しく、メンテナンス コストが高くなります。

3. リスト

リスト タイプは、複数の順序付けされた文字列を格納するために使用されます。リスト内の各文字列は要素になります。リストには、最大 2 ~ 32 -1 の要素を格納できます。 , キュー テーブルの両端で挿入 (pubsh) とポップ (pop) を行うことができます。また、指定した範囲内の要素のリストを取得したり、指定したインデックスの下にあるテーブル内の要素を取得したりすることもできます。リストはより柔軟です。スタックおよびキューとして機能するデータ構造で、実際の開発では多くのアプリケーション シナリオが含まれます。

リストには順序付けされた要素があるため、インデックス添字を使用して単一または複数の要素を取得できます。リスト内の要素は繰り返すことができます。

使用シナリオ: メッセージ キュー: Redis の lpush brpop コマンドの組み合わせにより、キューのブロッキングを実現できます。プロデューサー クライアントは lupsh を使用してリストの左側から要素を挿入し、複数のコンシューマー クライアントは brpop コマンドを使用してブロックします。リストの最後にある要素を取得し、複数のクライアントがロード バランシングと消費クリップボードの高可用性を確保します。png メッセージ キュー モデル↑ 記事リスト: 各ユーザーは独自の記事リストを持ち、記事リストをページに表示する必要があります。このとき、リストの使用を検討できます。リストは順序付けされるだけでなく、インデックス範囲に応じた要素の取得もサポートします。

4. コレクション

コレクション型は複数の文字列の要素を保存するためにも使用されますが、リストとは異なり、コレクション内で重複した要素は許可されず、コレクション内の要素はインデックス添字を使用して要素を取得することはできません。コレクション内の追加、削除、変更、検索をサポートすることに加えて、redis は複数のコレクションの交差セット、和集合、および差分セットもサポートします。また、コレクション型を合理的に使用することもできます。実際の開発で解決できる実用的な問題が数多くあります。

使用シナリオ: タグ: コレクション タイプの一般的な使用シナリオ。たとえば、あるユーザーはエンターテイメントやスポーツに興味があり、別のユーザーはニュースに興味があるかもしれません。これらの興味はタグです。このデータを使用して、次の情報を取得できます。同じタグを持つ人々、およびユーザーの共通の趣味のタグ。このデータは、ユーザー エクスペリエンスとユーザーの強い粘着性にとってより重要です。特定のコマンドの失敗によってデータの不整合が引き起こされるのを防ぐために、ユーザーとタグ間の関係は同じトランザクション内で維持される必要があります。

5. 順序付きセット

順序付きセットは必然的にセットに関連します。セットは重複したメンバーを持つことができないという特徴を保持しますが、違いは順序付きセット内の要素を並べ替えることができることです。リストの並べ替えの基準としてインデックス添字を使用するのとは異なり、並べ替えの基準として各要素のスコアを設定する点が異なります。 (順序集合内の要素は繰り返すことができませんが、クラス内の生徒の生徒番号を繰り返すことができないのと同じように、csore は繰り返すことができますが、テストの得点は同じになる可能性があります)。

以上がRedisのデータ構造とは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。