一般的な 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 サイトの他の関連記事を参照してください。