how to implement redis pub sub model using nodejs
var redis = require(“redis”);var publisher = redis.createClient();publisher.publish(“notification”, “{\”message\”:\”Hello world from Asgardian!\”}”, function(){ process.exit(0);});
how to implement redis pub sub model using nodejs
var redis = require(“redis”);var publisher = redis.createClient();publisher.publish(“notification”, “{\”message\”:\”Hello world from Asgardian!\”}”, function(){ process.exit(0);});
redis pub or sub nodejs
more example redis pub/sub -> https://github.com/restuwahyu13/express-todo-redis
redis pub or sub nodejs
// publisher
const IORedis = require('ioredis')
class Publisher {
constructor(configs = { key: '' }) {
this.key = configs.key
Publisher.set(configs.key)
}
static get() {
return this.key
}
static set(key = '') {
this.key = key
}
_redisConnect() {
const ioRedis = new IORedis({
host: '127.0.0.1',
port: 6379,
maxRetriesPerRequest: 50,
connectTimeout: 5000,
enableReadyCheck: true,
enableAutoPipelining: true
})
return ioRedis
}
async setString(keyName = '', data) {
const ioRedis = _redisConnect()
await ioRedis.set(keyName, data)
}
async setMap(keyName = '', data = {}) {
const ioRedis = this._redisConnect()
await ioRedis.hmset(keyName, { ...data })
}
async setArray(keyName = '', data = []) {
const ioRedis = _redisConnect()
await ioRedis.hmset(keyName, JSON.stringify({ data: data }))
}
async setResponse(data = {}) {
const ioRedis = this._redisConnect()
await ioRedis.hmset('message:speaker', { ...data })
}
}
module.exports = { Publisher }
redis pub or sub nodejs
// subscriber
const IORedis = require('ioredis')
const chalk = require('chalk')
const { Publisher } = require('./util.publisher')
class Subscriber {
constructor(configs = { key: '' }) {
this._key = configs.key
this._keyFrom = Publisher.get()
}
_redisConnect() {
const ioRedis = new IORedis({
host: '127.0.0.1',
port: 6379,
maxRetriesPerRequest: 50,
connectTimeout: 5000,
enableReadyCheck: true,
enableAutoPipelining: true
})
return ioRedis
}
async getString(keyName) {
if (this._key == this._keyFrom) {
const ioRedis = this._redisConnect()
const response = await ioRedis.get(keyName)
await ioRedis.expire(keyName, 60)
if (response) {
return Promise.resolve(response)
}
return {}
} else {
return Promise.reject(chalk.red(new Error(`invalid key Subscriber: ${this._key} and Publisher: ${this._keyFrom}`)))
}
}
async getMap(keyName) {
if (this._key == this._keyFrom) {
const ioRedis = this._redisConnect()
const response = await ioRedis.hgetall(keyName)
await ioRedis.expire(keyName, 60)
if (response) {
return Promise.resolve(response)
}
return {}
} else {
return Promise.reject(chalk.red(new Error(`invalid key Subscriber: ${this._key} and Publisher: ${this._keyFrom}`)))
}
}
async getArray(keyName) {
if (this._key == this._keyFrom) {
const ioRedis = this._redisConnect()
const response = await ioRedis.hgetall(keyName)
await ioRedis.expire(keyName, 60)
if (response) {
return Promise.resolve(JSON.parser(response).data)
}
return {}
} else {
return Promise.reject(chalk.red(new Error(`invalid key Subscriber: ${this._key} and Publisher: ${this._keyFrom}`)))
}
}
async getResponse() {
if (this._key == this._keyFrom) {
const ioRedis = this._redisConnect()
const response = await ioRedis.hgetall('message:speaker')
await ioRedis.expire('message:speaker', 30)
if (response) {
return Promise.resolve(response)
}
return {}
} else {
return Promise.reject(chalk.red(new Error(`invalid key Subscriber: ${this._key} and Publisher: ${this._keyFrom}`)))
}
}
}
module.exports = { Subscriber }
how to implement redis pub sub model using nodejs
var redis = require(“redis”);var subscriber = redis.createClient();subscriber.on(“message”, function (channel, message) { console.log(“Message: “ + message + “ on channel: “ + channel + “ is arrive!”);});subscriber.subscribe(“notification”);
Copyright © 2021 Codeinu
Forgot your account's password or having trouble logging into your Account? Don't worry, we'll help you to get back your account. Enter your email address and we'll send you a recovery link to reset your password. If you are experiencing problems resetting your password contact us