{"id":261,"date":"2023-02-24T06:17:27","date_gmt":"2023-02-23T22:17:27","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=261"},"modified":"2023-02-24T06:17:41","modified_gmt":"2023-02-23T22:17:41","slug":"redis-publish-subscribe","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/24\/redis-publish-subscribe\/","title":{"rendered":"Redis \u53d1\u5e03\u8ba2\u9605"},"content":{"rendered":"<p>Redis \u53d1\u5e03\u8ba2\u9605 (pub\/sub) \u662f\u4e00\u79cd\u6d88\u606f\u901a\u4fe1\u6a21\u5f0f\uff1a\u53d1\u9001\u8005 (pub) \u53d1\u9001\u6d88\u606f\uff0c\u8ba2\u9605\u8005 (sub) \u63a5\u6536\u6d88\u606f\u3002<\/p>\n<p>Redis \u5ba2\u6237\u7aef\u53ef\u4ee5\u8ba2\u9605\u4efb\u610f\u6570\u91cf\u7684\u9891\u9053\u3002<\/p>\n<p>\u4e0b\u56fe\u5c55\u793a\u4e86\u9891\u9053 channel1\uff0c\u4ee5\u53ca\u8ba2\u9605\u8fd9\u4e2a\u9891\u9053\u7684\u4e09\u4e2a\u5ba2\u6237\u7aef \u2014\u2014 client2\u3001client5 \u548c client1 \u4e4b\u95f4\u7684\u5173\u7cfb\uff1a<\/p>\n<p><!-- more --><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.yezhou.me\/AppBlog\/images\/\u6570\u636e\u5e93\/Redis\u8ba2\u9605\u9891\u9053\u4e0e\u5ba2\u6237\u7aef\u5173\u7cfb.png\" alt=\"Redis\u8ba2\u9605\u9891\u9053\u4e0e\u5ba2\u6237\u7aef\u5173\u7cfb\" \/><\/p>\n<p>\u5f53\u6709\u65b0\u6d88\u606f\u901a\u8fc7 PUBLISH \u547d\u4ee4\u53d1\u9001\u7ed9\u9891\u9053 channel1 \u65f6\uff0c\u8fd9\u4e2a\u6d88\u606f\u5c31\u4f1a\u88ab\u53d1\u9001\u7ed9\u8ba2\u9605\u5b83\u7684\u4e09\u4e2a\u5ba2\u6237\u7aef\uff1a<\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.yezhou.me\/AppBlog\/images\/\u6570\u636e\u5e93\/Redis\u8ba2\u9605\u53d1\u5e03.png\" alt=\"Redis\u8ba2\u9605\u53d1\u5e03\" \/><\/p>\n<h2>\u5b9e\u4f8b<\/h2>\n<p>\u4ee5\u4e0b\u5b9e\u4f8b\u6f14\u793a\u4e86\u53d1\u5e03\u8ba2\u9605\u662f\u5982\u4f55\u5de5\u4f5c\u7684\uff0c\u9700\u8981\u5f00\u542f\u4e24\u4e2a<code>redis-cli<\/code>\u5ba2\u6237\u7aef\u3002<\/p>\n<h3>\u8ba2\u9605\u8005<\/h3>\n<p>\u5728\u6211\u4eec\u5b9e\u4f8b\u4e2d\u6211\u4eec\u521b\u5efa\u4e86\u8ba2\u9605\u9891\u9053\u540d\u4e3a redisChat<\/p>\n<p>\u7b2c\u4e00\u4e2a redis-cli \u5ba2\u6237\u7aef\uff1a<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; SUBSCRIBE redisChat\nReading messages... (press Ctrl-C to quit)\n1) &quot;subscribe&quot;\n2) &quot;redisChat&quot;\n3) (integer) 1<\/code><\/pre>\n<h3>\u53d1\u5e03\u8005<\/h3>\n<p>\u73b0\u5728\uff0c\u6211\u4eec\u5148\u91cd\u65b0\u5f00\u542f\u4e2a redis \u5ba2\u6237\u7aef\uff0c\u7136\u540e\u5728\u540c\u4e00\u4e2a\u9891\u9053 redisChat \u53d1\u5e03\u4e24\u6b21\u6d88\u606f\uff0c\u8ba2\u9605\u8005\u5c31\u80fd\u63a5\u6536\u5230\u6d88\u606f\u3002<\/p>\n<p>\u7b2c\u4e8c\u4e2a redis-cli \u5ba2\u6237\u7aef\uff1a<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; PUBLISH redisChat &quot;Redis PUBLISH test&quot;\n\n(integer) 1\n\nredis 127.0.0.1:6379&gt; PUBLISH redisChat &quot;Learn redis by appblog.cn&quot;\n\n(integer) 1<\/code><\/pre>\n<h3>\u63a5\u6536\u6d88\u606f<\/h3>\n<p>\u8ba2\u9605\u8005\u7684\u5ba2\u6237\u7aef\u4f1a\u663e\u793a\u5982\u4e0b\u6d88\u606f\uff1a<\/p>\n<pre><code class=\"language-bash\">1) &quot;message&quot;\n2) &quot;redisChat&quot;\n3) &quot;Redis PUBLISH test&quot;\n1) &quot;message&quot;\n2) &quot;redisChat&quot;\n3) &quot;Learn redis by appblog.cn&quot;<\/code><\/pre>\n<h2>Redis \u53d1\u5e03\u8ba2\u9605\u547d\u4ee4<\/h2>\n<h3>PSUBSCRIBE pattern [pattern &#8230;]<\/h3>\n<p>\u8ba2\u9605\u4e00\u4e2a\u6216\u591a\u4e2a\u7b26\u5408\u7ed9\u5b9a\u6a21\u5f0f\u7684\u9891\u9053<\/p>\n<p>\u6bcf\u4e2a\u6a21\u5f0f\u4ee5<code>*<\/code>\u4f5c\u4e3a\u5339\u914d\u7b26\uff0c\u6bd4\u5982<code>it*<\/code>\u5339\u914d\u6240\u6709\u4ee5 it \u5f00\u5934\u7684\u9891\u9053( it.news \u3001 it.blog \u3001 it.tweets \u7b49\u7b49)\u3002<code>news.*<\/code>\u5339\u914d\u6240\u6709\u4ee5 news. \u5f00\u5934\u7684\u9891\u9053( news.it \u3001 news.global.today \u7b49\u7b49)\uff0c\u8bf8\u5982\u6b64\u7c7b\u3002<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; PSUBSCRIBE mychannel\nReading messages... (press Ctrl-C to quit)\n1) &quot;psubscribe&quot;\n2) &quot;mychannel&quot;\n3) (integer) 1<\/code><\/pre>\n<h3>PUBSUB subcommand [argument [argument &#8230;]]<\/h3>\n<p>\u67e5\u770b\u8ba2\u9605\u4e0e\u53d1\u5e03\u7cfb\u7edf\u72b6\u6001\uff0c\u5b83\u7531\u6570\u4e2a\u4e0d\u540c\u683c\u5f0f\u7684\u5b50\u547d\u4ee4\u7ec4\u6210\uff0c\u7531\u6d3b\u8dc3\u9891\u9053\u7ec4\u6210\u7684\u5217\u8868<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; PUBSUB CHANNELS\n1) &quot;redisChat&quot;\nredis 127.0.0.1:6379&gt; PUBSUB CHANNELS\n(empty list or set)<\/code><\/pre>\n<h3>PUBLISH channel message<\/h3>\n<p>\u5c06\u4fe1\u606f\u53d1\u9001\u5230\u6307\u5b9a\u7684\u9891\u9053<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; PUBLISH mychannel &quot;hello, i m here&quot;\n(integer) 1<\/code><\/pre>\n<h3>PUNSUBSCRIBE [pattern [pattern &#8230;]]<\/h3>\n<p>\u9000\u8ba2\u6240\u6709\u7ed9\u5b9a\u6a21\u5f0f\u7684\u9891\u9053<\/p>\n<pre><code class=\"language-bash\">127.0.0.1:6379&gt; PUNSUBSCRIBE mychannel\n1) &quot;punsubscribe&quot;\n2) &quot;mychannel&quot;\n3) (integer) 0<\/code><\/pre>\n<h3>SUBSCRIBE channel [channel &#8230;]<\/h3>\n<p>\u8ba2\u9605\u7ed9\u5b9a\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u9891\u9053\u7684\u4fe1\u606f<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; SUBSCRIBE mychannel \nReading messages... (press Ctrl-C to quit)\n1) &quot;subscribe&quot;\n2) &quot;mychannel&quot;\n3) (integer) 1<\/code><\/pre>\n<h3>UNSUBSCRIBE [channel [channel &#8230;]]<\/h3>\n<p>\u9000\u8ba2\u7ed9\u5b9a\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u9891\u9053\u7684\u4fe1\u606f<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; UNSUBSCRIBE mychannel \n1) &quot;unsubscribe&quot;\n2) &quot;mychannel&quot;\n3) (integer) 0<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Redis \u53d1\u5e03\u8ba2\u9605 (pub\/sub) \u662f\u4e00\u79cd\u6d88\u606f\u901a\u4fe1\u6a21\u5f0f\uff1a\u53d1\u9001\u8005 (pub) \u53d1\u9001\u6d88\u606f\uff0c\u8ba2\u9605\u8005 (sub) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-261","post","type-post","status-publish","format-standard","hentry","category-redis"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/261","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=261"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/261\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=261"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=261"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=261"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}