本文总结常见的使用node操作redis服务,redis的key是唯一的,如果一个key所对应的存储类型是string,则不能再次覆盖式设置key为hash;
1、链接Redis
node 链接Redis
var RDS_PORT = 5472;
var RDS_HOST = '127.0.0.1';
var RDS_PWD = '123456';
const opts = {
auth_pass: RDS_PWD,
}
const redis = require('redis');
const client = redis.createClient(RDS_PORT, RDS_HOST,opts);
client.on('connect',function(){
console.log('redis connect success!');
});
client.on('end',function(err){
console.log('end');
});
client.on('error', function (err) {
console.log('err' + err);
});
client.on('ready', function () {
client.publish('testFirst', 'hi! first!');
client.publish('testSecond', 'hi! second!');
client.publish('message', 'hi! message!');
});
运行结果
redis connect success!
2、发布和订阅
api说明
redis.createClient(redisConfig) 创建订阅者/发布者
subscriber.subscribe(‘channel1’) 订阅者订阅频道
publisher.publish(‘channel1’, ‘msg’) 发布者发送消息到知道频道
subscriber.unsubscribe(‘channel1’) 订阅者取消订阅频道
quit() 订阅者/发布者关闭redis连接
发布订阅例子:
const redis = require("redis");
const opts = {
auth_pass: "123456",
}
// 创建订阅者
const subscriber = redis.createClient( 5472,'127.0.0.1',opts);
// 创建发布者
const publisher = redis.createClient(5472,'127.0.0.1',opts);
// 订阅者监听消息
subscriber.on("message", function(channel, message) {
console.log(`Sub received message in ${channel}: ${message}`);
});
// 订阅者订阅频道
subscriber.subscribe("channel1");
subscriber.subscribe("channel2");
let count = 0;
let interval = setInterval(() => {
count ++;
// 发布者发布消息
publisher.publish('channel1', `${count}`);
publisher.publish('channel2', `${count}`);
if (count >= 3) {
clearInterval(interval);
// 订阅者取消订阅
subscriber.unsubscribe("channel1");
subscriber.unsubscribe("channel2");
// 订阅者/发布者关闭redis连接
subscriber.quit();
publisher.quit();
}
}, 1000);
运行结果
Sub received message in channel1: 1
Sub received message in channel2: 1
Sub received message in channel1: 2
Sub received message in channel2: 2
Sub received message in channel1: 3
Sub received message in channel2: 3
参考文献