Redis のコア データ型を理解する
string 文字列
tring
型はバイナリ セーフです。つまり、string
任意のデータを含めることができます。
Redis の通常の文字列は、独自のエンコード方式である raw エンコードを使用しており、このエンコード方式では、冗長領域を事前に動的に拡張して事前に割り当て、頻繁なメモリ割り当てのオーバーヘッドを軽減します。
文字列長が 1MB 未満の場合は必要な長さの 2 倍で割り当てられ、1MB を超える場合は 1MB ずつ容量を増やして事前割り当てされます。
Redis
の数値も文字列型として保存されますが、エンコード方法は通常の文字列とは異なります。数値は 整数エンコードを使用し、文字列の内容は次のとおりです。 整数値のバイナリ バイト シーケンス に直接設定します。
通常の文字列、シリアル化されたオブジェクト、カウンター、その他のシナリオを保存する場合、Redis 文字列型を使用できます。文字列データ型に対応する命令には、set、get、mset、incr、decr などが含まれます。
list list
list
リストは、一連の文字列型を格納する 高速双方向リンク リストですWords 文字列値
従来のポップおよびプッシュ要素の場合、リストが直接追加またはポップされるため、パフォーマンスは非常に高く、時間計算量は O(1) です。ただし、ランダムな挿入、ランダムな削除、ランダムな範囲の取得では、リストをポーリングして位置を決定する必要があり、パフォーマンスが比較的低くなります。
リストを操作する場合、lpush、lpop、rpush、rpop、および lrange を使用して、通常のキューの入口と出口、および範囲取得の操作を実行できます。一部の特殊なシナリオでは、lset および linsert を使用して実行することもできますランダムな挿入操作。lrem を使用して指定された要素の削除操作を実行します。最後に、メッセージ リストを使用するときに、取得をブロックするために Blpop と Brpop を使用することもできます。これにより、リストに一時的に要素がなくなったときに、静かにメッセージ リストの取得を待つことができます。追加の継続的な問い合わせなしで新しい要素を挿入します。
set セット
set は、文字列型の順序付けされていないコレクションです。セット内の要素は一意です。つまり、セット内に重複する要素はありません。 Redis のコレクションは通常、辞書ハッシュ テーブルを通じて実装されるため、要素のハッシュ値に基づいて挿入、削除、クエリ要素を直接見つけることができ、時間計算量は O(1) です。
#Operation
sismember
この命令は、キーに対応する要素がセット データ構造内に存在するかどうかを判断します。 If 存在する場合は 1 を返し、存在しない場合は 0 を返します。
sdiff
複数のセット コレクションの差分を実行する命令。
-
sinter
命令は複数のセットで交差を実行します;
sunion
命令は複数のセットで結合を実行します;
spop
コマンドはランダムな要素をポップアップし、
srandmember
コマンドは 1 つ以上のランダムな要素を返します。
友達リスト を保存し、あなたが注意を払っているかどうかを判断し、 を作成するために使用できます。友人の推薦。さらに、セットの一意性を利用して、サービスのソース ビジネスとソース IP に関する正確な統計を作成することもできます。
ソートセット順序付きセット
順序付きセットでは、各要素は double 型のスコア値に関連付けられます。ソートされたセットは、このスコア値によって小さいものから大きいものへとソートされます。順序付きセットでは、要素の繰り返しは許可されませんが、スコア値の繰り返しは許可されます。操作
- ##zscan
命令: 順序付きセット内の要素を順番に取得します;
- zscore
命令: 要素のスコア値を取得します。
- zrange
命令: 次のように指定して、指定されたスコア範囲を返します。スコア要素;
要素のスコア値が変更された場合、zincrby 命令を使用して要素のスコア値を加算または減算することもできます。 - zinterstore、zunionstore
命令を使用して、複数の順序付きセットを交差および結合し、新しい順序付きセットを新しい key に格納します。重複する要素がある場合は、重複した要素のスコアが追加され、新しいセット内の要素のスコア値として使用されます。
順序付きコレクションを使用して、ランキングをカウントし、リアルタイムでランキングを更新できます。また、学生のスコアを記録するためにも使用できるため、特定のスコア範囲内の学生のリストを簡単に取得できますシステム統計に重みを追加して、ダッシュボードにリアルタイムで表示することもできます。
ハッシュハッシュわずかに
bitmap
ビットマップは一連の連続した 2 進数です。最下層は実際には string
by に基づいてカプセル化され、保存されます。 bit コマンド操作を実行します。ビットマップ内の各ビットの位置がオフセットです。setbit および bitfield を使用して、ビットマップ内の各ビットを 0 または 1 に設定できます。また、bitcount を使用して、ビットマップ内で 1 に設定されたビットの数をカウントすることもできます。また、bitcount を使用して、ビットマップ内で 1 に設定されたビットの数をカウントします。Bitop を使用して、複数のビットマップに対して AND、OR、XOR などの演算を実行できます。
bitmap
ビットマップの特徴は、ビット単位の設定、加算、OR 演算などの演算が非常に効率的であり、ストレージ コストが非常に低いことです。オブジェクトのラベル属性を格納するために使用されます。1 つのビットでラベルを格納できます。ビットマップを使用して、過去 N 日間のユーザーのログイン ステータスを保存できます。毎日 1 ビットを使用し、ログイン時に 1 に設定します。
パーソナライズされたレコメンデーションは、ソーシャル アプリケーションでは非常に重要です。軍事、エンターテイメント、ビデオ、写真、テキストなど、ニュースやフィードに一連のタグを設定できます。ビットマップは、これらのタグを保存するために使用されます。対応するタグ ビットは 1 に設定されます。ユーザーについても同様の方法でユーザーの複数の属性を記録でき、タグに基づいて多次元の統計を簡単に実行できます。ビットマップの重要な命令には、setbit、getbit、bitcount、bitfield、bitop、bitpos などが含まれます。
使用状況
統計的なユーザー ログイン ステータス: 1 2 3 5 日以内のログイン
ビットマップ: 1 1 1 0 1
GEO 地理的位置
特定の位置ポイントを保存するときは、まず Geohash
アルゴリズムを使用して、その位置の 2 次元の経度および緯度を 1 次元にマッピングおよびエンコードします。 52 ビットの整数値。場所の名前と経度および緯度のエンコード スコアはキーと値のペアとして使用され、分類キーに対応するソート セットに格納されます。
特定の場所の点 A 付近の人々を計算する必要がある場合は、まず指定された場所 A を中心点として、距離を半径として使用して GEO ハッシュの 8 方位範囲を計算します。方位範囲内の人々を順番にポーリングし、これらの位置点と中心位置 A との間の距離が必要な距離範囲内にある限り、すべての位置点が目標位置点となります。範囲内のすべてのロケーション ポイントをポーリングした後、ロケーション ポイント A 付近のすべてのターゲットを取得するように順序を変更します。
geoadd を使用して、場所名 (人、車両、店舗名など) および対応する地理的位置情報を指定された場所分類キーに追加します。
geopos を使用して、特定の場所の場所を簡単にクエリします。名前 位置情報;
georadius を使用して、指定された位置に近く、指定された距離を超えないすべての要素を取得します。
Redis GEO 地理的位置、Geohash を使用して多数の 2 次元経度を変換しますと緯度を 1 次元の整数値に変換します。これにより、地理的位置のクエリ、距離の測定、および検索範囲が簡単になります。ただし、地理的点の数が多いため、1 つの地理分類キーの下に多数の要素が存在する可能性があるため、GEO を設計する際には、単一のキーが過度に拡張されないよう事前に計画する必要があります。
Redis の GEO 地理的位置データ構造には、場所の特定の位置のクエリ、現在地から目的地までの距離の確認、近くの人、レストラン、映画館などの確認など、多くのアプリケーション シナリオがあります。 GEO の地理的位置データ構造では、重要な命令には geoadd、geopos、geodist、georadius、georadiusbymember などが含まれます。
geodist を使用して、指定した 2 つの位置間の距離を取得します。
hyperLogLog カーディナリティ統計
hyperLogLog
はカーディナリティ統計に使用されるデータ型で、統計に膨大な数の要素が入力された場合にのみ、非常に少ないメモリでも実行できます。 HyperLogLog はメタデータを保存しませんが、カウントされる要素の推定数のみを記録します。この推定数は標準偏差 0.81% の近似値です。ほとんどのビジネス シナリオでは、大規模なデータの場合、1% 未満の誤差は許容されます。
Redis の HyperLogLog をカウントする際、カウント数が大きくない場合は、疎行列ストレージが使用されます。カウント数が増加するにつれて、疎行列が占める領域は徐々に増加します。しきい値を超えると、密行列、密行列が占めるスペースは固定で、約 12KB バイトです。
hyperLoglog データ型を通じて、pfadd を使用してカーディナリティ統計に新しい要素を追加したり、pfcount を使用して hyperLogLog 構造に格納されているおおよそのカーディナリティ番号を取得したり、hypermerge を使用して複数の要素をマージしたりすることもできます。 hyperLogLogs は 1 つの hyperLogLog 構造体に組み込まれるため、結合された基数を簡単に取得できます。
hyperLogLog の特徴は、統計処理が独立した要素を記録しないこと、使用するメモリが非常に少ないこと、そして大量のデータをカウントするのに非常に適していることです。大規模および中規模のシステムでは、hyperLogLog データ型を使用して、日または月ごとのユニーク訪問者数をカウントしたり、多数のユーザーによって検索された独立した用語の数をカウントしたりできます。
関連する学習の推奨事項: Laravel
以上がRedis のコア データ型を理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisデータをクリアする方法:Flushallコマンドを使用して、すべての重要な値をクリアします。 FlushDBコマンドを使用して、現在選択されているデータベースのキー値をクリアします。 [選択]を使用してデータベースを切り替え、FlushDBを使用して複数のデータベースをクリアします。 DELコマンドを使用して、特定のキーを削除します。 Redis-CLIツールを使用してデータをクリアします。

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Redisのキューを読むには、キュー名を取得し、LPOPコマンドを使用して要素を読み、空のキューを処理する必要があります。特定の手順は次のとおりです。キュー名を取得します:「キュー:キュー」などの「キュー:」のプレフィックスで名前を付けます。 LPOPコマンドを使用します。キューのヘッドから要素を排出し、LPOP Queue:My-Queueなどの値を返します。空のキューの処理:キューが空の場合、LPOPはnilを返し、要素を読む前にキューが存在するかどうかを確認できます。

Redisコマンドラインツール(Redis-Cli)を使用して、次の手順を使用してRedisを管理および操作します。サーバーに接続し、アドレスとポートを指定します。コマンド名とパラメーターを使用して、コマンドをサーバーに送信します。ヘルプコマンドを使用して、特定のコマンドのヘルプ情報を表示します。 QUITコマンドを使用して、コマンドラインツールを終了します。

Redisデータの有効期間戦略には2つのタイプがあります。周期削除:期限切れのキーを削除する定期的なスキャン。これは、期限切れの時間帯-remove-countおよび期限切れの時間帯-remove-delayパラメーターを介して設定できます。怠zyな削除:キーが読み取られたり書かれたりした場合にのみ、削除の有効期限が切れたキーを確認してください。それらは、レイジーフリーレイジーエビクション、レイジーフリーレイジーエクスピア、レイジーフリーラジーユーザーのパラメーターを介して設定できます。

RedisクラスターでのZsetの使用:Zsetは、要素をスコアに関連付ける順序付けられたコレクションです。シャード戦略:a。ハッシュシャーディング:ZSTキーに従ってハッシュ値を分配します。 b。範囲シャード:要素スコアに従って範囲に分割し、各範囲を異なるノードに割り当てます。操作の読み取りと書き込み:a。読み取り操作:ZSetキーが現在のノードのシャードに属している場合、ローカルで処理されます。それ以外の場合は、対応するシャードにルーティングされます。 b。書き込み操作:Zsetキーを保持しているシャードに常にルーティングされます。

Debian SystemsのPostgreSQLデータベースのパフォーマンスを改善するには、ハードウェア、構成、インデックス、クエリ、その他の側面を包括的に検討する必要があります。次の戦略は、データベースのパフォーマンスを効果的に最適化できます。1。ハードウェアリソース最適化メモリ拡張:適切なメモリは、データとインデックスをキャッシュするために重要です。高速ストレージ:SSD SSDドライブを使用すると、I/Oパフォーマンスが大幅に向上する可能性があります。マルチコアプロセッサ:マルチコアプロセッサを最大限に活用して、並列クエリ処理を実装します。 2。データベースパラメーターチューニングShared_Buffers:システムメモリサイズの設定によると、システムメモリの25%〜40%に設定することをお勧めします。 work_mem:ソートとハッシュ操作のメモリを制御します。通常は64MBから256mに設定されています
