Redis 7のSharded Pub/Subとは何ですか?
Redis 7のSharded Pub/Subは、複数のスレッドにメッセージトラフィックを配布することにより、Pub/Subスケーラビリティを向上させます。従来のRedis Pub/Subは、高負荷の下でボトルネックになる可能性のあるシングルスレッドモデルによって制限されていました。シャード付きパブ/サブを使用すると、チャネルは特定のI/Oスレッドに割り当てられたシャードに分割されます。各スレッドは、割り当てられたシャードのメッセージ配信を処理し、競合を削減し、パフォーマンスを向上させます。キーポイントは次のとおりです。1)ハッシュによるチャネル間マッピング。 2)構成可能な数のシャード。 3)シャード付きサブスクリプションのSSUBScribeの使用。 4)パブリッシュ中の自動シャード。リアルタイムチャットシステムやIoTプラットフォームなど、多くのチャネルを備えたアプリケーションに最適です。それを使用するには、購読をssubscribeに置き換えますが、パブリッシュは変更されていません。クライアントはシャードに明示的にオプトインする必要があり、両方のモードは移行中に共存できます。
Redis 7のSharded Pub/Subは、従来のRedis Pub/Sub Systemの制限の1つであるスケーラビリティに対処する新機能です。 Redisをリアルタイムメッセージングに使用していて、特に高負荷の下で複数のチャネルまたはパターンを持っている場合、パフォーマンスの問題にヒットしたことがあるかもしれません。 Sharded Pub/Subは、メインスレッドを介してすべてをルーティングする代わりに、利用可能なすべてのイベントループ(またはスレッド)にPub/Sub Trafficを広げることで役立ちます。
なぜそれが必要だったのか
Redisは常にコマンドを処理するためにシングルスレッドモデルを使用してきました。これは、物事をシンプルに保ちますが、大量のパブ/サブメッセージを処理するときにボトルネックになる可能性があります。以前のバージョンでは、RedisがスレッドI/O Enabledでコンパイルされたとしても、すべてのPUB/サブオペレーションがメインスレッドを通過しました。つまり、多くのサブスクライバーにメッセージを公開または配信することで、他の操作をブロックする可能性があります。
Redis 7では、これは変更されます。
シャードされたパブ/サブはどのように機能しますか?
Sharded Pub/Subの背後にある核となるアイデアは、シャードです。複数のスレッドにわたってメッセージ配信の責任を分配します。これがどのように機能しますか:
- Redisは、チャネルを「Shards」と呼ばれる論理グループに分割します。
- 各シャードは、特定のI/Oスレッドに割り当てられます。
- クライアントがチャネルにサブスクライブすると、サブスクリプションはそのチャネルの原因となるシャード(およびスレッド)に登録されます。
- チャネルに公開されたメッセージは、同じスレッドで処理および配信され、クロススレッド同期オーバーヘッドを避けます。
このようにして、RedisはCPUコアの数が増えるにつれてPUB/サブパフォーマンスをより効果的に拡張できます。
いくつかの重要なポイント:
- チャネル名は、ハッシュ機能を使用してシャードにマッピングされます。
- シャードの数は、
redis.conf
(pubsub_shard_streams_per_node
)で構成できます。 - 加入者は、 shardsubscribedに登録されたチャネルからメッセージを受信します。そのためには別のコマンドがあります:
SSUBSCRIBE
。
いつ使用する必要がありますか?
Sharded Pub/Subの使用を検討する必要があります。
- アプリケーションは多数のチャネルを使用します。
- パブ/サブの使用量が多いため、パフォーマンスのボトルネックが発生します。
- メッセージの配布だけでインスタンスを追加することなく、レディスを水平にスケーリングする必要があります。
次のようなアプリケーションで特に便利です。
- 多くの部屋やトピックを備えたリアルタイムチャットシステム。
- 多くのユーザーに更新を放送する通知サービス。
- 各デバイスが独自のチャネルにステータス更新を公開するIoTプラットフォーム。
ユースケースが多くのサブスクライバーを持ついくつかのチャネルしか関与していない場合、標準のPub/Subはまだ問題ない場合があります。ただし、チャネルの数のスケーリングを開始したり、メッセージごとに低いレイテンシが必要になると、シャードが適切になります。
シャード付きパブ/サブの使用方法
シャード付きPub / Subを使用するのは簡単ですが、クラシックSUBSCRIBE
/ PUBLISH
フローとは異なります。これがあなたがする必要があることです:
- シャード付きの方法でチャネルを購読するには、
SUBSCRIBE
代わりにSSUBSCRIBE
使用します。 - シャードチャンネルに公開するには、
PUBLISH
を使用します。シャードは、チャネル名に基づいて自動的に処理されます。 - 登録解除するには、
SUNSUBSCRIBE
を使用してください。
例:
#シャードチャネルを購読します client1> subscribe mychannel #メッセージを公開 - 正しいスレッドで処理される client2> MyChannel「Hello Sharded World」を公開
留意してください:
- クライアントは、シャードを利用するには、
SSUBSCRIBE
明示的に使用する必要があります。 - クラシック
SUBSCRIBE
とSSUBSCRIBE
、同じ接続で混合することはできません。 - Redis 7に更新されていないツールまたはクライアントは、変更されていない限り、Sharded Pub/Subを使用しません。
また、Redis 7は両方のモードをサポートしているため、アプリの部分を徐々に移行して、従来のモデルに他のサブスクリプションを維持しながら、シャード付きサブスクリプションを使用できます。
最終的な考え
Redis 7のSharded Pub/Subは、Redisのリアルタイムメッセージング機能に非常に必要なスケーラビリティの改善をもたらします。さまざまなスレッドにチャネルを割り当てることにより、Redisはシンプルさや信頼性を犠牲にすることなく、はるかに高いスループットを処理できます。
特にPUB/サブヘビー環境でRedisを大規模に使用している場合、この機能をアップグレードして試す価値があります。
それは基本的にそれです - それほど複雑ではありませんが、メッセージングプラットフォームとしてのRedisにとって間違いなく大きな前進です。
以上がRedis 7のSharded Pub/Subとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

PSYNCは、Redisマスタースレーブレプリケーションにおける部分的な再同期メカニズムです。これは、スレーブサーバーが切断された後に切断中に失われたデータのみを同期して同期効率を向上させるために使用されます。そのコアは、メインサーバーが維持するキューであるReplicationBackLogに依存しています。デフォルトのサイズは1MBで、最近実行された書き込みコマンドを保存します。スレーブサーバーが再接続すると、PSYNCコマンドが送信され、マスターサーバーはこれに基づいて部分的な同期を実行できるかどうかを判断します。1。runIDは一貫している必要があります。 2。オフセットはバックログバッファーに含まれている必要があります。条件が満たされた場合、データは引き続きオフセットから送信され、それ以外の場合は完全な同期がトリガーされます。 PSYNCの成功率を改善する方法は次のとおりです。1。適切にREPL-Bを増やす

Redissentinel構成のクォーラムとは、フェールオーバーがトリガーされる前に合意する必要があるセンチネルノードの最小数を指します。たとえば、5つのセンチネルが設定され、クォーラムが3の場合、フェールオーバーが開始される前にマスターノードが到達できないことを確認するには、少なくとも3つのセンチネルが必要です。 1. Quorumは、主観的なダウンライン(SDOWN)および客観的なダウンライン(Odown)をマークするために必要な最小コンセンサス数としてマスターノードをマークすることを決定します。 2。高すぎると、時間の経過とともに障害が発生する可能性があり、設定が低すぎると誤判断が生じる可能性があります。 3.奇妙なセンチネルを使用し、総数の半分をわずかに上回るクォーラムを設定することをお勧めします。 4.展開スケール、フォールトトレランス、ネットワーク環境と組み合わせて包括的に検討する必要があります。 5

redissupportsseospatialdatastorageandqueriesviaitsatatype.1.usegeoadddtostorecoordinateasmembersekey、withsyntaxgeoaddddeddedddeddeddelatitudemember.2

redisfunctionSinversion7solveissuswithtraditionalluascriptingbyEnablingModular、reusableserver-sidelogic.1.theyallowsturucturedfuncturedDefinition forBetterororizationAndainability.2.theyImproveFormAnceThroughlazylazyand.Chaching

redisStreamsuitable forlightwightin-memorystreamprocessinging with while kafkaexcelsinhigh-throughpput、durablelogStorageandrabbitmqumplexRoutingindguを保護する際に、durablelogStorageandrabbitmbbitmbbitmbbitmbbitmeddelple.redisstreamsworkswellforrealialyticsorticsorsoryticsorsmalljobqueeueseweueseweues

highcpuusageinredisistipically causedbyineffience querieries、過度の分離トラフィック、メモリプレス、ormisconfigurations.to addressthis、最初、Checkforlargeorcomplexcommandslikeys*、Smembers、Orlangeonbigdatasentandreplacemwiththemwiththapertertertivedaurtertertertertasentadreplarangeonbigdataset

ZrangeretrieveseSelementinginascendingsscoreorder、whilezrevrangereturnSthemindEssendoder.whenworking when withedisSortedsets、usezrangeTogettheLowest-idealbottom-rankedentriesororonderlistings-andzrevrangeop-rankeditemss

Redisの最新の機能とベストプラクティスに関する知識を維持することは、継続的な学習と公式およびコミュニティのリソースに焦点を当てるための鍵です。 1. Redisの公式Webサイト、ドキュメントの更新とリリースノートを定期的に確認し、GitHubリポジトリまたはメーリングリストを購読し、バージョンの更新通知を取得し、アップグレードガイドを読んでください。 2。RedisのGoogleグループメーリングリスト、Redditサブセクション、StackOverFlow、その他のプラットフォームに関する技術的な議論に参加して、他の人の経験や問題の解決策を理解します。 3.ローカルテスト環境を構築するか、Dockerを使用して機能テスト用のさまざまなバージョンを展開し、CI/CDでRedisアップグレードテストプロセスを統合し、実際の操作を通じて機能の値をマスターします。 4。閉じます
