nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例
本文實(shí)例講述了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類。分享給大家供大家參考,具體如下:
之前在node下使用redis作為緩存介質(zhì),對(duì)redis進(jìn)行了一層封裝
First: 安裝npm包 redis
const redis = require('redis');
Second: 進(jìn)行封裝
// cache.js
const redis = require('redis');
const config = require('config');
const logger = require('winston');
const redisObj = {
client: null,
connect: function () {
this.client = redis.createClient(config.redis);
this.client.on('error', function (err) {
logger.error('redisCache Error ' + err);
});
this.client.on('ready', function () {
logger.info('redisCache connection succeed');
});
},
init: function () {
this.connect(); // 創(chuàng)建連接
const instance = this.client;
// 主要重寫了一下三個(gè)方法??梢愿鶕?jù)需要定義。
const get = instance.get;
const set = instance.set;
const setex = instance.setex;
instance.set = function (key, value, callback) {
if (value !== undefined) {
set.call(instance, key, JSON.stringify(value), callback);
}
};
instance.get = function (key, callback) {
get.call(instance, key, (err, val) => {
if (err) {
logger.warn('redis.get: ', key, err);
}
callback(null, JSON.parse(val));
});
};
// 可以不用傳遞expires參數(shù)。在config文件里進(jìn)行配置。
instance.setex = function (key, value, callback) {
if (value !== undefined) {
setex.call(instance, key, config.cache.maxAge, JSON.stringify(value), callback);
}
};
return instance;
},
};
// 返回的是一個(gè)redis.client的實(shí)例
module.exports = redisObj.init();
How to use
const cache = require('./cache');
cache.get(key, (err, val) => {
if (val) {
// do something
} else {
// do otherthing
}
});
cache.set(key, val, (err, res) => {
// do something
});
cache.setex(key, val, (err, res) => {
// do something
})
希望本文所述對(duì)大家nodejs程序設(shè)計(jì)有所幫助。
相關(guān)文章
Node.js應(yīng)用設(shè)置安全的沙箱環(huán)境
這篇文章主要介紹了Node.js應(yīng)用設(shè)置安全的沙箱環(huán)境的方法以及注意事項(xiàng),對(duì)此有需要的朋友可以參考學(xué)習(xí)下。2018-04-04
Nodejs監(jiān)聽日志文件的變化的過(guò)程解析
最近有在做日志文件的分析,其中有一個(gè)需求:A服務(wù)器項(xiàng)目需要用Nodejs監(jiān)聽日志文件的變化,當(dāng)項(xiàng)目產(chǎn)生了新的日志信息,將新的部分通過(guò)socket傳輸?shù)紹服務(wù)器項(xiàng)目,本文重點(diǎn)給大家介紹Nodejs監(jiān)聽日志文件的變化的相關(guān)知識(shí),一起看看吧2019-08-08
用node.js寫一個(gè)jenkins發(fā)版腳本
這篇文章主要介紹了用node.js寫一個(gè)jenkins發(fā)版腳本,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
在Node.js中發(fā)出HTTP請(qǐng)求的 5 種方法
學(xué)習(xí)如何在 Node.js 中發(fā)出 HTTP 請(qǐng)求可能會(huì)讓人感到不知所措,因?yàn)橛袛?shù)十個(gè)可用的庫(kù),每個(gè)解決方案都聲稱比上一個(gè)更高效,在這篇文章中,我們將探討在 Node.js 中發(fā)出 HTTP 請(qǐng)求的五種最流行的方法,并為每種方法提供說(shuō)明,需要的朋友可以參考下2023-11-11
Node.js 多線程實(shí)戰(zhàn)小結(jié)
在?Node.js?的世界中,多線程技術(shù)一直是一個(gè)受到廣泛關(guān)注的領(lǐng)域,本文主要介紹了Node.js 多線程實(shí)戰(zhàn)小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
nodejs中內(nèi)置模塊fs,path常見的用法說(shuō)明
這篇文章主要介紹了nodejs中內(nèi)置模塊fs,path常見的用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
node.js中實(shí)現(xiàn)雙重身份驗(yàn)證機(jī)制的方法詳解
雙重身份驗(yàn)證(Two-factor?authentication)是一種安全機(jī)制,它要求用戶提供兩種不同的身份驗(yàn)證因素來(lái)訪問他們的帳戶,下面我們就來(lái)學(xué)習(xí)一下如何使用speakeasy在nodejs中實(shí)現(xiàn)雙重身份驗(yàn)證吧2023-10-10

