I. 基本的な使用法
1. 構成
SpringBoot 2.2.1.RELEASE
を使用して、pom.xml に直接プロジェクト環境を構築します。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
に redis の依存関係を追加します。redis がデフォルト構成の場合、追加の構成を追加する必要はありません。次のように、application.yml
で直接構成することもできます。以下
spring: redis: host: 127.0.0.1 port: 6379 password:
2. 利用姿勢
redisのパブリッシュ/サブスクライブは主に2つのコマンドを使用しますpublish/subscribe
; SpringBootでパブリッシュとサブスクライブモードを使用するのは比較的簡単です, そして、RedisTemplate の実装を使用すると非常に便利です
a. メッセージの公開
@Service public class PubSubBean { @Autowired private StringRedisTemplate redisTemplate; public void publish(String key, String value) { redisTemplate.execute(new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { redisConnection.publish(key.getBytes(), value.getBytes()); return null; } }); } }
b. サブスクリプション メッセージ
ここではメッセージ サブスクリプションを使用することに注意してください。 org.springframework.data.redis.connection.MessageListener
消費ロジックを実装する
public void subscribe(MessageListener messageListener, String key) { redisTemplate.execute(new RedisCallback<Object>() { @Override public Object doInRedis(RedisConnection redisConnection) throws DataAccessException { redisConnection.subscribe(messageListener, key.getBytes()); return null; } }); }
c.テストケース
上記のパブリッシュとサブスクライブを検証するための簡単なテストケースを作成します。を理解してくださいMessageListener
使用姿勢; 単純な WEB プロジェクトを作成し、2 つの REST インターフェイスを提供します
@RestController @RequestMapping(path = "rest") public class DemoRest { @Autowired private PubSubBean pubSubBean; // 发布消息 @GetMapping(path = "pub") public String pubTest(String key, String value) { pubSubBean.publish(key, value); return "over"; } // 新增消费者 @GetMapping(path = "sub") public String subscribe(String key, String uuid) { pubSubBean.subscribe(new MessageListener() { @Override public void onMessage(Message message, byte[] bytes) { System.out.println(uuid + " ==> msg:" + message); } }, key); return "over"; } }
まず 2 つのコンシューマを作成し、次にメッセージを送信するときに両方を受信します。新しいコンシューマ または、メッセージを送信するとき、3 人全員がメッセージを受信できます
3. 使用手順とアプリケーション シナリオ
Redis のパブリッシュとサブスクライブは、比較的単純なシナリオにのみ適しています。これは、1 対 N をサポートする単純なパブリッシュおよびサブスクライブ モデルであることがわかり、送信されたメッセージはオンラインの消費者のみが取得できます (オンラインでない消費者については、次のようにしか言えません)。残念です) そして redis の場合、メッセージがプッシュアウトされたら終わりです。消費者が正常に消費できるかどうかについては、私たちは気にしません。
強調:
オンライン消費者のみがメッセージを受信できます
消費者がメッセージを受信できるのは 1 回だけです
次の質問は次のとおりです。どのような状況で実行できますか? Redis を使用したパブリッシュとサブスクライブについてはどうですか?
メモリベースのキャッシュの無効化
二次キャッシュに reids メモリを使用することは、比較的一般的な方法であると言えます。システム負荷を効果的に改善しますが、問題も明らかです。特にアプリケーションが複数のサーバーにデプロイされている場合、メモリ内のキャッシュされたデータの無効化が問題になります。すべてのサーバーの特定のメモリ キャッシュを同時に無効にしたい場合は、次を使用します。 redis のパブリッシュ/サブスクライブは 1 つです より良い選択
SpringCloud Config 構成の更新
SpringCloud Config を構成センターとして使用している友人は、この問題に頻繁に遭遇する可能性があります。変更は問題です (もちろん、公式サポートは mq を介してバス経由で同期することです。また、Spring Boot admin を介してフラッシュを強制することもできます)
Redis パブリッシュ/サブスクライブの助けを借りて、これも問題です。構成の動的な更新を実現するための優れた代替手段 (後述) 特定の実装デモ、ご興味がございましたら、引き続き Yihuihui ブログをフォローしてください)
#redis キーが無効なサブスクリプション #キャッシュに Redis を使用する場合、通常は有効期限を設定します。Redis は有効期限イベントを提供します。もちろんデフォルトでは有効になっていません。また、subscribeを通じてキャッシュ無効化イベントにサブスクライブすることもできます
設定を変更しますそしてキー無効化イベント
notify-keyspace-events Ex##を有効にします #redisを再起動した後、無効なイベント
subscribe __keyevent@0__:expiredをサブスクライブします
以上がRedis パブリッシュおよびサブスクライブ メソッドを使用して単純なメッセージング システムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

redisactsassassadatastoreandaservice.1)asadatastore、itusesin memorystorage for fastorations、supporting variousdatastructureSlike-key-valuepairsandsortedsets.2)asaservice、iteasruascruascriptingrupting criptingforceptingpurplecomplecomplecprexoperations

他のデータベースと比較して、Redisには次の独自の利点があります。1)非常に速い速度、および読み取り操作は通常、マイクロ秒レベルにあります。 2)豊富なデータ構造と操作をサポートします。 3)キャッシュ、カウンター、公開サブスクリプションなどの柔軟な使用シナリオ。 Redisまたはその他のデータベースを選択する場合、特定のニーズとシナリオに依存します。 Redisは、高性能および低遅延のアプリケーションでうまく機能します。

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

Redisは、大規模なデータの効率的なストレージとアクセスに適したNOSQLデータベースです。 1.Redisは、複数のデータ構造をサポートするオープンソースメモリデータ構造ストレージシステムです。 2.キャッシュ、セッション管理などに適した、非常に速い読み取り速度と書き込み速度を提供します。 4.使用例には、基本的なキー値ペア操作と高度なコレクション重複排除関数が含まれます。 5.一般的なエラーには、接続の問題、データ型の不一致、メモリオーバーフローが含まれるため、デバッグに注意する必要があります。 6.パフォーマンス最適化の提案には、適切なデータ構造の選択とメモリ排除戦略の設定が含まれます。

現実世界でのRedisのアプリケーションには、1。キャッシュシステムとして、データベースクエリを加速し、2。Webアプリケーションのセッションデータを保存するには、3。リアルタイムランキングを実装する4。メッセージ配信をメッセージキューとして簡素化する。 Redisの汎用性と高性能により、これらのシナリオで輝きます。

Redisは、高速、汎用性、豊富なデータ構造のために際立っています。 1)Redisは、文字列、リスト、コレクション、ハッシュなどのデータ構造をサポートし、コレクションを注文します。 2)メモリを介してデータを保存し、RDBとAOFの持続性をサポートします。 3)Redis 6.0から始めて、マルチスレッドI/O操作が導入されました。これにより、高い並行性シナリオでパフォーマンスが向上しました。

redisisclassifiedsaNosqldatabasebasesakey-valuedataModelinsteaded ofthetraditionaldatabasemodel.itoffersspeedand andffficability、makingidealforreal-timeaplications andcaching、butmaynotbesbesutable fors cenariois requiring datientiantientioniity

Redisは、データをキャッシュし、分散ロックとデータの持続性を実装することにより、アプリケーションのパフォーマンスとスケーラビリティを向上させます。 1)キャッシュデータ:Redisを使用して頻繁にアクセスしたデータをキャッシュして、データアクセス速度を向上させます。 2)分散ロック:Redisを使用して分散ロックを実装して、分散環境での操作のセキュリティを確保します。 3)データの持続性:データの損失を防ぐために、RDBおよびAOFメカニズムを介してデータセキュリティを確保します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
