因項目用到而寫,先摘錄下來,以備參考:
const fs = require('fs')
const path = require('path')
const redis = require("redis");
const basePath = path.resolve('./')
/*
* 注意:如果redis-server與nodejs客戶端都在本地,下列可寫成
* client = _redis.createClient();否則要對括號內容進行更改
*/
const client = redis.createClient(6379,'127.0.0.1');//括號內容對應:(端口號,主機)
client.on("ready", function (err) {
console.log("ready :" , "yes"); //鏈接成功檢測
});
client.on("error", function (err) {
console.log("Error :" , err); //錯誤檢測
});
module.exports = (function () {
var mod = {};
mod.webSet = function(res, _key, value, cb){
client.set(_key, JSON.stringify(value), function(err, result){
if (err) {
fs.writeFile(`${basePath}/logs/sqlerr.log`, err, () => {})
res.json({
code: 500,
data: err
})
} else {
if (cb) {
cb(result)
} else {
res.json({
code: 200,
data: result
})
}
}
})
};
mod.webGet = function(res, _key, cb){
client.get(_key, function(err, result){
if (err) {
fs.writeFile(`${basePath}/logs/sqlerr.log`, err, () => {})
res.json({
code: 500,
data: err
})
} else {
if (cb) {
cb(JSON.parse(result))
} else {
res.json({
code: 200,
data: JSON.parse(result)
})
}
}
})
};
mod.set = function (_key, value, cb) {
client.set(_key, JSON.stringify(value), function (err, result) {
if (err) {
fs.writeFile(`${basePath}/logs/sqlerr.log`, err, () => {})
cb && cb()
} else {
cb && cb(result);
}
})
};
mod.get = function (_key, cb) {
client.get(_key, function (err, result) {
if (err) {
console.log(err);
fs.writeFile(`${basePath}/logs/sqlerr.log`, err, () => {})
cb && cb();
} else {
cb && cb(JSON.parse(result));
}
})
};
return mod
})()
// 測試代碼
// redis.set("swim","2012039210213",new Date().getTime(),function(result){
// console.log(result)//存入的狀態,正常則爲 "OK"
// })
// redis.get("swim",function(result){
// console.log(result)//取出的值
// })
/*
* 一下爲redis消息通訊機制的應用代碼
*/
let sub = redis.createClient(6379, '127.0.0.1'); // 監聽消費者
let pub = redis.createClient(6379, '127.0.0.1'); // 生產者
// 在sub開始監聽時允許觸發subscribe事件進行操作,類似連接數據庫的connect事件
sub.on('subscribe', function (channel, count) {
console.log(`${channel}:${count}`); // test channel:1
pub.publish('test channel', 'channel message test')
})
sub.on('message', function (channel, message) {
console.log(`${channel}-message:${JSON.stringify(message)}`)
})
sub.subscribe('test channel');