在 Node.js 应用程序中实现 Redis Pub/Sub
在本文中,我们将了解如何在 Node.js 应用程序中实现 Redis Pub/Sub。在 Node.js 应用程序中实现 Redis Pub/Sub
Promises 包含一个循环 - Javascript ES6
在进入实施部分之前,我们将了解什么是 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