Redisの仕様は何ですか?

王林
リリース: 2023-06-03 14:19:49
転載
1252 人が閲覧しました

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

flush このコマンドはすべてのデータをクリアするため、危険性の高い操作です。使用は固く禁止されています。DBA はこのコマンドを rename する必要があります。ソースからは無効になっています。DBA のみが操作可能です。

メッセージ キューとして使用することは固く禁止されています。

よほど特別な必要がない限り、

Redis をメッセージ キューとして使用することは固く禁止されています。 Redis メッセージキューとして使用すると、容量、ネットワーク、効率、機能の面でさまざまな問題が発生します。メッセージ キューが必要な場合は、高スループットの Kafka または信頼性の高い RocketMQ を使用できます。

範囲を設定しないバッチ操作は厳密に禁止されています

redis したがって、ネットワーク遅延を除き、高速なクエリと低速なクエリは、これらのバッチ操作関数に属します。オンラインの問題のほとんどはこれらの機能によって引き起こされます。

1. [zset] zset での範囲外の操作は厳しく禁止されています

ZRANGEZRANGEBYSCORE およびその他の複数の操作ZSET関数では、ZRANGE myzset 0 -1 および範囲を設定しないその他の操作を使用することは固く禁止されています。 ZRANGE myzset 0 100 のように範囲を指定してください。長さがわからない場合は、ZCARD を使用して長さを決定できます

2。[ハッシュ] HGETALL

の使用は固く禁止されています。データ量の多いキーは HGETALL を指定すると取り出されます HASH に関するすべてのデータは、データ数が多すぎると混雑の原因となりますので、業務が安定していることを確認してください。制御可能。長さがわからない場合は、HLEN を使用して最初に長さを決定できます

3、[キー] Redis クラスタークラスターの mget 操作

Redis Cluster ##MGET 操作では、各シャードからデータを収集して集約します。従来の M/S アーキテクチャと比較すると、パフォーマンスが大幅に低下します。ストレス テストを行って評価してください。 advanced4 , [その他] sunion、sinter、sdiff などの一部の集計操作の使用は固く禁止されています。

select 関数を無効にします

select

関数は、database を切り替えるために使用されます。ユーザーにとって、これは問題が発生しやすい場所です。cluster モードは、複数の database をサポートしていません。メリットがないので無効化されています。 <h4>トランザクションを無効にする</h4> <p><code>redis これはすでに非常に高速です。大きな必要がない場合は、例外をキャッチしてロールバックすることをお勧めします。トランザクション関数は使用しないでください。使用する人はほとんどいません。これ。

lua スクリプト拡張機能を無効にする

lua このスクリプトは、クールに見える多くのことを実行できますが、SQL に似ています。のストアド プロシージャはパフォーマンスといくつかの困難なメンテナンスの問題を引き起こすため、無効にする必要があります。

長期監視の禁止

monitor 関数は、redis によって現在実行されているデータ フローをすぐに確認できますが、注意してください。ピーク時に長時間ブロックされる monitor コマンドでは、redis のパフォーマンスに重大な影響を与えます。このコマンドは使用が禁止されているわけではありませんが、使用する場合には特別な注意が必要です。

キーの仕様

RedisKey は、問題が発生したときに簡単に特定できるように標準化する必要があります。 Redisscheme のない KV データベースに属しているため、慣例に基づいてその scheme セマンティクスを確立します。その利点:

  1. 特定の種類のキーに基づいてデータをクリーンアップできる

  2. 特定の種類のキーに基づいてデータを更新できる

  3. 特定の種類のキーの所有権と適用シナリオを理解できるようにする

  4. 統合とプラットフォーム化に備え、技術的な変更を削減する

一般に、key には次の次元が必要です: ビジネス、キーの目的、変数など。各次元は次で区切られます。キーの例をいくつか示します:

user:sex ユーザー 10002232 の性別

msg:achi 201712 のユーザー数ランキング

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

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!