在 Node.js 应用程序中实现 Redis Pub/Sub

2025-06-08

在 Node.js 应用程序中实现 Redis Pub/Sub

在本文中,我们将了解如何在 Node.js 应用程序中实现 Redis Pub/Sub。在 Node.js 应用程序中实现 Redis Pub/Sub

改变创建对象的方式 - Javascript 周刊

Promises 包含一个循环 - Javascript ES6

原型继承 - Javascript

在进入实施部分之前,我们将了解什么是 pub sub 以及为什么我们需要它。

什么是 Pub/Sub

Pub/Sub 只不过是一种发布/订阅模型,其中订阅者订阅某个事件。当发布者发布事件时,订阅者会收到通知。

用一个简单的比喻来解释。假设你想在亚马逊上买一部最新款的 iPhone。但是,由于需求量大,这款产品提前售罄了。亚马逊要求你在新车到货时收到通知。

在这里,您是订阅活动的订阅者(当库存可用时)。亚马逊是发布者(告知库存可用)。

当发布者(亚马逊)发布事件(有库存)时,您(订阅者)将收到通知。

实现发布/订阅

出版商

我们正在使用 Redis PubSub,它是一种流行的内存数据库。您还可以使用其他 pub sub 模型,如 Kafka、RabbitMQ 等。

首先,要在 Node.js 应用程序中实现 Redis PubSub,你需要在你的机器上安装Redis。其次,你需要在命令行中运行 Redis 服务器。

之后,我们需要名为redis的 npm 包,它通过 redis 与 Express 应用程序连接。

我们主要要创建三个应用服务器。一个作为发布者,其余两个作为订阅者。

npm init --yes
npm install express redis

创建一个名为server.js的文件并添加以下代码。

const express = require('express');
const redis = require('redis');

const publisher = redis.createClient();

const app = express();

app.get('/',(req,res) => {
    const user = {
        id : "123456",
        name : "Davis"
    }

    publisher.publish("user-notify",JSON.stringify(user))
    res.send("Publishing an Event using Redis");
})

app.listen(3005,() => {
    console.log(`server is listening on PORT 3005`);
})

我们正在从包中导入 redis。

之后,我们创建一个redis客户端来连接redis服务器。在redis中,我们可以将任意数量的客户端连接到redis服务器。

一旦我们连接它,我们就可以通过调用发布方法来发布事件

publisher.publish("user-notify",JSON.stringify(user))

我们需要传递主题名称来写入数据和数据

订阅者

使用以下代码在不同的文件夹中创建两个快速服务器。

服务器.js

const express = require('express');
const redis = require('redis');

const subscriber = redis.createClient();

const app = express();

subscriber.on("message",(channel,message) => {
    console.log("Received data :"+message);
})

subscriber.subscribe("user-notify");

app.get('/',(req,res) => {
    res.send("Subscriber One");
})

app.listen(3006,() => {
    console.log("server is listening to port 3006");
})

服务器.js

const express = require('express');
const redis = require('redis');

const subscriber = redis.createClient();

const app = express();

subscriber.on("message",(channel,message) => {
    console.log("Received data :"+message);
})


app.get('/',(req,res) => {
    res.send("subscriber two");
})

subscriber.subscribe("user-notify");

app.listen(3007,() => {
    console.log("server is listening to port 3007");
})

现在您可以同时运行发布者和订阅者。当您运行发布者时,发布者将向订阅者发布数据。

演示

本文就到这里。在 Node.js 应用程序中实现 Redis 的 Pub/Sub。想了解更多关于 Redis 的知识,可以观看 Brad Traversy 的教程,这是一个很棒的视频。

祝您编码愉快 :-)

鏂囩珷鏉ユ簮锛�https://dev.to/ganeshmani/implementing-redis-pub-sub-in-node-js-application-12he
PREV
理解 JavaScript 中的生成器 - JavaScript 周刊
NEXT
使用 TypeScript 和 Docker 构建生产就绪的 Node.js 应用程序