Redis のパブリッシュとサブスクライブとは何ですか?
プッシュ問題を解決するために、Redis のサブスクリプション発行モデルを使用することを考えました~。
概念的な説明については、多かれ少なかれ言及する必要があります:
什么是Redis发布订阅?Redis发布订阅是一种消息通信模式,发送者通过通道A发送消息message,订阅过通道A的客户端就可以接收到消息message。嗯度娘上面的解释要比我所说的好多了,而我所理解的就是:所谓的订阅发布模式,其实和我们看电视,听广播差不多,在我们没有调台(换频道)的时候,那个频道也是在传递消息的(发布)。我们换到那个频道上(订阅)就能接收到消息了。是的,虽然可能有些不恰当~
手順
本文中示例采用了三个客户端,以“品”字形排列,由上至下,由左至右分别为客户端1(c1),客户端2(c2),客户端3(c3).特此说明。
Redis サブスクリプションと公開コマンド
まず、Redis サーバーの確立に関して、関連するドキュメントを確認してください。情報を自分で調べて環境を構築してください
Redisでパブリッシュとサブスクライブを行うための簡単なコマンドは6つだけだと聞きました。つまり、パターン[パターン...] Patirts形式の形式に一致する1つ以上のチャネルにsubscribeを登録します。サブコマンド [引数 [引数 ...]]
購読と公開システムのステータスを表示します
PUNSUBSCRIBE [パターン [パターン ...]]
形式を満たすすべてのチャンネルから購読を解除します
チャンネル登録 [チャンネル...]
1 つ以上のチャンネルを登録します
UNSUBSCRIBE [チャンネル [チャンネル...]]
チャンネルの登録を解除します
- 例 1 - 登録
- redis に接続します。 次に、コマンド
を入力して、study という名前のチャンネルに登録します。
SUBSCRIBE study
ログイン後にコピー - 次に勉強チャンネルにメッセージを送ります。 ~~ 例 2 - PUBLISH
-
別のクライアントを開きます。グリフ レイアウトの一番上のクライアントをパブリッシャーとして使用します。「
PUBLISH study "message1-go go go"
ログイン後にコピー」と入力すると、この時点でクライアント 1 がスタディ チャネルでメッセージを公開していることがわかります。 、クライアント 2 (調査チャンネルに登録している) は c1 によって公開されたメッセージを受信できますが、クライアント 3 は調査チャンネルに登録していないため、c1 によって送信されたメッセージを受信できません。 - 例 3 - PSUBSCRIBE
PSUBSCRIBE study*
OK と入力し、次に c1 に
PUBLISH study "message2"
を入力します。 上の結果の図:
c3 はワイルドカードの形式を採用しており、調査チャンネルも正常に登録されています。
次に、c1 にコマンドの入力を続けます:
PUBLISH study:java "I hate java forever"
psubscribe を使用すると、study チャネルにサブスクライブするだけでなく、study を先頭とするチャネルにもサブスクライブすることがわかります。
例 4 - PUBSUB
c1 に pubsub チャネルと入力して取得します:
127.0.0.1:6379> PUBSUB channels 1) "study"
は、現在アクティブなチャネルを意味します。
Jedis はサブスクリプションパブリッシャーモデルを実装します
好了,上面通过命令行熟悉了一下Redis中有关订阅发布者模式的相关命令。下面我们要将redis的订阅与发布者嵌入到项目中。 首先,我们使用jedis先订阅一个名为:study的频道
次に、最初にコマンドラインからメッセージをパブリッシュします:
その後、jedis を使用してプロジェクト内のメッセージをパブリッシュします:
普通に通信できます ~ そうそう ~
コア コード: PublishMessage.java はメッセージを公開するためのスレッドを開始するために使用されますprivate Logger logger = LoggerFactory.getLogger(PublishMessage.class); @Resource private JedisCluster jedisCluster; /** * 发布消息 * * @param channel 频道 * @param message 信息 */ public void sendMessage(final String channel, final String message) { Thread thread = new Thread(() -> { Long publish = jedisCluster.publish(channel, message); logger.info("服务器在: {} 频道发布消息{} - {}", channel, message, publish); }); logger.info("发布线程启动:"); thread.setName("publishThread"); thread.start(); }
ChatSubscribe.java は JedisPubSub から継承されたサブスクリプション関連のイベントを処理するために使用されます
private Logger logger = LoggerFactory.getLogger(ChatSubscribe.class); // 取得订阅的消息后的处理 @Override public void onMessage(String channel, String message) { logger.info("订阅成功,接收到的消息为:频道-{},消息-{}", channel, message); RedisString.message = message; } // 取得按表达式的方式订阅的消息后的处理 @Override public void onPMessage(String pattern, String channel, String message) { System.out.println("-----取得按表达式的方式订阅的消息后的处理-----"); System.out.println(pattern + "=" + channel + "=" + message); } // 初始化按表达式的方式订阅时候的处理 @Override public void onPSubscribe(String pattern, int subscribedChannels) { System.out.println("-----初始化按表达式的方式订阅时候的处理-----"); System.out.println(pattern + "=" + subscribedChannels); } // 取消按表达式的方式订阅时候的处理 @Override public void onPUnsubscribe(String pattern, int subscribedChannels) { System.out.println("-----取消按表达式的方式订阅时候的处理-----"); System.out.println(pattern + "=" + subscribedChannels); } @Override public void onPong(String pattern) { super.onPong(pattern); } // 初始化订阅时候的处理 @Override public void onSubscribe(String channel, int subscribedChannels) { logger.info("初始化订阅信息:频道-{},订阅频道-{}", channel, subscribedChannels); } // 取消订阅时候的处理 @Override public void onUnsubscribe(String channel, int subscribedChannels) { logger.info("已取消订阅频道{}", channel); }
SubScribeMessage.java チャネルへのサブスクリプション、チャネルのキャンセルなどアクションクラス
rree以上が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)

ホットトピック

1. [スタート]メニューを起動し、[cmd]と入力し、[コマンドプロンプト]を右クリックし、[管理者として実行]を選択します。 2. 次のコマンドを順番に入力します (注意してコピーして貼り付けてください): SCconfigwuauservstart=auto、Enter キーを押す SCconfigbitsstart=auto、Enter キーを押す SCconfigcryptsvcstart=auto、Enter キーを押す SCconfigtrustedinstallerstart=auto、Enter キーを押す SCconfigwuauservtype=share、Enter キーを押す netstopwuauserv 、enter netstopcryptS を押す

GolangAPI のキャッシュ戦略により、パフォーマンスが向上し、サーバーの負荷が軽減されます。一般的に使用される戦略は、LRU、LFU、FIFO、TTL です。最適化手法には、適切なキャッシュ ストレージの選択、階層型キャッシュ、無効化管理、監視とチューニングが含まれます。実際には、データベースからユーザー情報を取得する API を最適化するために LRU キャッシュが使用されます。それ以外の場合は、データベースからデータを取得した後にキャッシュを更新できます。

PHP 開発では、キャッシュ メカニズムにより、頻繁にアクセスされるデータがメモリまたはディスクに一時的に保存され、データベース アクセスの数が削減され、パフォーマンスが向上します。キャッシュの種類には主にメモリ、ファイル、データベース キャッシュが含まれます。キャッシュは、組み込み関数またはサードパーティのライブラリ (cache_get() や Memcache など) を使用して PHP に実装できます。一般的な実用的なアプリケーションには、データベース クエリ結果をキャッシュしてクエリ パフォーマンスを最適化したり、ページ出力をキャッシュしてレンダリングを高速化したりすることが含まれます。キャッシュ メカニズムにより、Web サイトの応答速度が効果的に向上し、ユーザー エクスペリエンスが向上し、サーバーの負荷が軽減されます。

まず、システム言語を簡体字中国語表示に設定して再起動する必要があります。もちろん、以前に表示言語を簡体字中国語に変更したことがある場合は、この手順をスキップできます。次に、レジストリ regedit.exe の操作を開始し、左側のナビゲーション バーまたは上部のアドレス バーで HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage に直接移動し、InstallLanguage キーの値と Default キーの値を 0804 に変更します (英語に変更する場合)。まずシステムの表示言語を en-us に設定し、システムを再起動してから、すべてを 0409 に変更します) この時点でシステムを再起動する必要があります。

1. まず、デスクトップ上の[このPC]アイコンをダブルクリックして開きます。 2. 次に、マウスの左ボタンをダブルクリックして [C ドライブ] に入ります。システム ファイルは通常、自動的に C ドライブに保存されます。 3. 次に、C ドライブで [windows] フォルダーを見つけ、ダブルクリックしてに入ります。 4. [windows]フォルダーに入ったら、[SoftwareDistribution]フォルダーを見つけます。 5. 入力後、win11 のダウンロード ファイルとアップデート ファイルがすべて含まれている [ダウンロード] フォルダーを見つけます。 6. これらのファイルを削除したい場合は、このフォルダー内で直接削除してください。

Redis は、高性能のキー/値キャッシュです。 PHPRedis 拡張機能は、Redis サーバーと対話するための API を提供します。 Redis に接続し、データを保存および取得するには、次の手順を使用します。 接続: Redis クラスを使用してサーバーに接続します。ストレージ: set メソッドを使用してキーと値のペアを設定します。取得: get メソッドを使用してキーの値を取得します。

8月6日、CNMOはMeizuの新しい携帯電話が再び流出したことに気づいた。関係者が提供した情報によると、Meizuは6000mAhの超大容量バッテリーを搭載すると予想されるミッドレンジモデルを準備しているとのことですが、Meizu 22シリーズについては今のところニュースはないと予想されています。 Qualcomm Snapdragon 8Gen4 モバイル プラットフォームを搭載しており、リリース時期は遅れる可能性があります。以前の新しい Meizu 携帯電話を参照して、CNMO は Meizu 22 シリーズが 2025 年の第 1 四半期にリリースされる可能性があると考えています。 1. Meizu の新しい携帯電話は国家品質認証に合格しており、そのモデルは M431Q です。このマシンはエントリーレベルのモデルに位置し、10Wの充電のみをサポートしており、価格は1,000元程度になる見込みです。この携帯電話は Meizu のサブブランド Meizu の製品であると疑われています。 M431Q は、他のいくつかのモデルとともに今年 5 月にデータベースで発見されました。今回は国家品質を超えました

エラーの原因とソリューションPECLを使用してDocker環境に拡張機能をインストールする場合、Docker環境を使用するときに、いくつかの頭痛に遭遇します...
