Redis は強力な機能と豊富なデータ型を備えていますが、システムがどれほど高速であっても、異常な乱用には耐えられません。一部の高リスク機能を無効にし、開発の足かせを外すことで、企業は特定の実装に縛られることなく、簡潔かつ一般的なアイデアで問題を検討できるようになります。
Redis には、さまざまな用途に基づいて異なる永続化戦略とエビクション戦略があるため、Redis クラスターを使用および申請する前に、それがキャッシュに使用されるのかストレージに使用されるのかを明確にしてください。 Redis クラスターにはマスター/スレーブとクラスターの 2 つのモードがあり、どちらにも独自の長所と短所があります。以下の仕様ではクラスタモードの区別はせず、利用シーンと運用制限の観点から説明します。
Redis は永続性をサポートしていますが、すべてのデータを Redis に保存すると非常にコストがかかります。ホット データ (QPS が 5k を超えるデータなど) を Redis にロードすることをお勧めします。低頻度データは Mysql
および ElasticSearch
に保存できます。
無関係なデータ サービスをすべて 1 つの Redis
に入れないでください。一方で、相互のビジネスへの影響を回避し、他方では、単一インスタンスの拡張を回避し、影響を軽減し、障害が発生した場合には迅速に回復できます。
Redis
はシングルスレッド サービスであるため、メッセージが過剰になると他の操作がブロックされ、速度が低下します。メッセージの内容を 1KB 未満に抑えることをお勧めします。 50KBを超える単一レコードは固く禁止されています。また、メッセージが大きすぎると、ネットワーク帯域幅の使用量が多くなり、ディスクに保存するときに IO の問題が発生します。
接続の作成と破棄を頻繁に行うと、大量のシステム リソースが浪費され、極端な場合にはホストがクラッシュする可能性があります。正しい Redis
クライアント接続プール構成を使用していることを確認してください。
キャッシュに使用するKey
として有効期限を設定する必要があります。有効期限は長いほど良いため、ビジネスの性質に応じて設定してください。失敗時間の単位には、秒単位のものとミリ秒単位のものがあるので、多くの生徒は注意しないと簡単に間違いを犯してしまう可能性があることに注意してください。
キャッシュはキャッシュのみに使用する必要があります。削除後にビジネス ロジックを変更したり、ビジネスに介入したりしてはなりません。第一に、キャッシュの高可用性はビジネスに影響を与えます。第二に、ディープカップリングは予測不可能な影響を及ぼします。第三に、メンテナンス行に表皮効果をもたらします。
小規模なアプリケーションのことは忘れてください
singleredis
などのクラスターでは、データ サービスに使用される場合は、redis
クラスター (M/S およびクラスターを含む) を急いで拡張しないでください。クラスターが大きくなると、状態の同期と永続性のパフォーマンスが低下します。クラスターの分割にはクライアント hash
の使用が優先されます。例: ユーザー ID に従って 10 個のクラスターが分割され、最後の番号が 0 のユーザーが最初のクラスターに分類されます。
キー
コマンド効率が非常に低く、O(N )
操作はブロックされます。cluster
上で他の通常のコマンドを実行すると、悲惨な操作になります。使用は固く禁止されています。DBA
は、このコマンドの名前を 変更し、ソースから無効にする必要があります。
flush このコマンドはすべてのデータをクリアするため、危険性の高い操作です。使用は固く禁止されています。
DBA はこのコマンドを
rename する必要があります。ソースからは無効になっています。
DBA のみが操作可能です。
Redis をメッセージ キューとして使用することは固く禁止されています。
Redis メッセージキューとして使用すると、容量、ネットワーク、効率、機能の面でさまざまな問題が発生します。メッセージ キューが必要な場合は、高スループットの
Kafka または信頼性の高い
RocketMQ を使用できます。
redis したがって、ネットワーク遅延を除き、高速なクエリと低速なクエリは、これらのバッチ操作関数に属します。オンラインの問題のほとんどはこれらの機能によって引き起こされます。
ZRANGE、
ZRANGEBYSCORE およびその他の複数の操作
ZSET関数では、
ZRANGE myzset 0 -1 および範囲を設定しないその他の操作を使用することは固く禁止されています。
ZRANGE myzset 0 100 のように範囲を指定してください。長さがわからない場合は、
ZCARD を使用して長さを決定できます
の使用は固く禁止されています。データ量の多いキーは HGETALL を指定すると取り出されます
HASH に関するすべてのデータは、データ数が多すぎると混雑の原因となりますので、業務が安定していることを確認してください。制御可能。長さがわからない場合は、
HLEN を使用して最初に長さを決定できます
Redis Cluster ##MGET
操作では、各シャードからデータを収集して集約します。従来の M/S
アーキテクチャと比較すると、パフォーマンスが大幅に低下します。ストレス テストを行って評価してください。 advanced4 , [その他] sunion、sinter、sdiff などの一部の集計操作の使用は固く禁止されています。
関数は、database
を切り替えるために使用されます。ユーザーにとって、これは問題が発生しやすい場所です。cluster
モードは、複数の database
をサポートしていません。メリットがないので無効化されています。 <h4>トランザクションを無効にする</h4>
<p><code>redis
これはすでに非常に高速です。大きな必要がない場合は、例外をキャッチしてロールバックすることをお勧めします。トランザクション関数は使用しないでください。使用する人はほとんどいません。これ。
lua
このスクリプトは、クール
に見える多くのことを実行できますが、SQL
に似ています。のストアド プロシージャはパフォーマンスといくつかの困難なメンテナンスの問題を引き起こすため、無効にする必要があります。
monitor
関数は、redis
によって現在実行されているデータ フローをすぐに確認できますが、注意してください。ピーク時に長時間ブロックされる monitor
コマンドでは、redis
のパフォーマンスに重大な影響を与えます。このコマンドは使用が禁止されているわけではありませんが、使用する場合には特別な注意が必要です。
Redis
の Key
は、問題が発生したときに簡単に特定できるように標準化する必要があります。 Redis
は scheme
のない KV
データベースに属しているため、慣例に基づいてその scheme
セマンティクスを確立します。その利点:
特定の種類のキーに基づいてデータをクリーンアップできる
特定の種類のキーに基づいてデータを更新できる
特定の種類のキーの所有権と適用シナリオを理解できるようにする
統合とプラットフォーム化に備え、技術的な変更を削減する
一般に、key
には次の次元が必要です: ビジネス、キーの目的、変数など。各次元は次で区切られます。キーの例をいくつか示します:
user:sex ユーザー 10002232 の性別
msg:achi 201712 のユーザー数ランキング
以上がRedisの仕様は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。