Redis の使用シナリオは何ですか?
一般的な Redis コマンドの概要: 時間計算量の概要と、特定のデータ型によって内部的に使用されるデータ構造を含む;
Redis の高度な機能: 永続性、レプリケーション、センチネル、クラスターの導入など;
Redis について: メモリとブロッキングについて理解します。この部分は非常に重要です。これまでに紹介したテクニックはすべてテクニックとして使用でき、これはタオの一部である必要があります。
開発スキル: 主に実践的なものの概要キャッシュ設計と一般的な落とし穴を含む開発。
最初の部分を開始して、Redis をもう一度見てみましょう。
このシリーズの内容は、redis-3.2.12 に基づいています。
Redis は万能薬ではありません
面接中に、長所と短所を比較するようよく求められます。 Redis と Memcache の違いですが、個人的には、キャッシュだけでなく他のこともできる非リレーショナル データベースと、キャッシュのみに使用される 2 つは比較には適さないと思います。 Redis はキャッシュとしてよく使用されます。これが、Redis を他のテクノロジーとよく比較する主な理由です。では、Redis では何ができるのでしょうか?何ができないのですか?
Redis は何でもできます
キャッシュ、これが現在 Redis の最もよく知られた使用シナリオであることは疑いの余地がありません。サーバーのパフォーマンス向上に非常に効果的です;
ランキング一覧 従来のリレーショナルデータベースを使用すると非常に面倒ですが、Redis の SortSet データ構造を使用すると非常に便利です;
電卓/速度リミッター。Redis のアトミックな自動インクリメント操作を使用すると、ユーザーの「いいね!」数やユーザーの訪問数などをカウントできます。このタイプの操作に MySQL を使用する場合、頻繁な読み取りと書き込みにより、かなりの効果が得られます。プレッシャー; 速度リミッターの一般的な使用シナリオは、特定の API へのユーザーのアクセス頻度を制限することです。一般的に使用されるシナリオには、ユーザーが異常なクリックによって引き起こされる不必要なプレッシャーを防ぐためのパニック買いが含まれます。関係、コレクションの使用 交差、結合、差分などの一部のコマンド。共通の友人や共通の趣味などの機能を簡単に処理できます。
単純なメッセージ キュー。Redis 独自のパブリッシュ/サブスクライブ モードに加えて、List を使用して次のようなキュー メカニズムを実装することもできます。電子メール送信などの要件は高い信頼性を必要としませんが、多くの DB プレッシャーをもたらします。リストを使用して非同期分離を完了できます。
セッション共有 (PHP を例にとります)。デフォルトのセッションは次の場所に保存されます。サーバー ファイル、クラスター サービスの場合、同じユーザーが異なるマシンにアクセスする可能性があり、ユーザーは頻繁にログインすることになります。Redis を使用してセッションを保存した後、ユーザーはどのマシンにアクセスしても対応する情報を取得できます。 on. セッション情報。
Redis でできないこと
Redis は豊富な機能を備えていますが、万能ではなく、特定の分野に適しており、半分の労力で 2 倍の結果を得ることができます。悪用すると、システムの不安定化、コストの増加、その他の問題が発生する可能性があります。
たとえば、Redis は基本的なユーザー情報を保存するために使用されます。Redis は永続性をサポートできますが、その永続性ソリューションはデータの絶対的な着陸を保証できず、永続性が原因で Redis のパフォーマンスが低下する可能性もあります。 Redis サービスへの負荷が高まります。
簡単にまとめると、データ量が多すぎてデータへのアクセス頻度が非常に低い企業は、Redis の使用には適していません。データが大きすぎるとコストが増加し、アクセス頻度が低すぎると考えられます。メモリに保存するのはリソースの無駄です。
選択する理由を常に見つける必要があります
上記では Redis のいくつかの使用シナリオについて説明しました。そのため、これらに対する解決策には他にも多くのオプションがあります。キャッシュなどのシナリオ Memcache を使用すると、MySql でセッション共有を実装でき、RabbitMQ でメッセージ キューを実装できます。なぜ Redis を使用する必要があるのですか?
高速、完全にメモリベース、C 言語で実装、ネットワーク層は epoll を使用して同時実行性の問題を解決、シングルスレッド モデルにより不必要なコンテキストの切り替えと競合状態が回避されます。注: シングルスレッドのみを指します。ネットワークへのリクエスト モジュールは、リクエストを使用してクライアントのリクエストを処理します。永続性と同様に、処理するためにスレッド/プロセスを再度開きます。
豊富なデータ型。Redis には 8 つのデータ型があります。もちろん、主なものは次のとおりです。よく使われるのは String、Hash、List、Set、SortSet の 5 種類で、いずれもキー値に基づいてデータを整理します。各データ タイプには、ほとんどのニーズを満たす非常に豊富な操作コマンドのセットが用意されています。特別なニーズがある場合は、Lua スクリプト (アトミック性) を使用して新しいコマンドを自分で作成することもできます。
提供される豊富なデータ型に加えて、Redis はスロークエリ分析、パフォーマンステスト、パイプライン、トランザクション、Lua カスタムコマンド、ビットマップ、HyperLogLog、パブリッシュ/サブスクライブ、Geo などのパーソナライズされた機能も提供します。
Redis のコードは GitHub 上のオープン ソースです。コードは非常にシンプルかつ洗練されており、誰でもソース コードを理解できます。コンパイルとインストールも非常に簡単で、システムへの依存はありません。活発なコミュニティ、さまざまなクライアントの言語サポートも非常に充実しています。また、トランザクションサポート(未試行)、永続化、マスタースレーブレプリケーションなどの機能も備えており、高可用性と分散処理の実現を実現しています。
開発者として、私たちが使用するものをブラックボックスにすることはできません。
以上が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ツールを使用してデータをクリアします。

Redis指令を使用するには、次の手順が必要です。Redisクライアントを開きます。コマンド(動詞キー値)を入力します。必要なパラメーターを提供します(指示ごとに異なります)。 Enterを押してコマンドを実行します。 Redisは、操作の結果を示す応答を返します(通常はOKまたは-ERR)。

Redisを使用して操作をロックするには、setnxコマンドを介してロックを取得し、有効期限を設定するために有効期限コマンドを使用する必要があります。特定の手順は次のとおりです。(1)SETNXコマンドを使用して、キー価値ペアを設定しようとします。 (2)expireコマンドを使用して、ロックの有効期限を設定します。 (3)Delコマンドを使用して、ロックが不要になったときにロックを削除します。

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

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redisソースコードを理解する最良の方法は、段階的に進むことです。Redisの基本に精通してください。開始点として特定のモジュールまたは機能を選択します。モジュールまたは機能のエントリポイントから始めて、行ごとにコードを表示します。関数コールチェーンを介してコードを表示します。 Redisが使用する基礎となるデータ構造に精通してください。 Redisが使用するアルゴリズムを特定します。

Redisは、メッセージミドルウェアとして、生産消費モデルをサポートし、メッセージを持続し、信頼できる配信を確保できます。メッセージミドルウェアとしてRedisを使用すると、低遅延、信頼性の高いスケーラブルなメッセージングが可能になります。
