nodejs使用redis作为缓存介质实现的封装缓存类示例


Posted in NodeJs onFebruary 07, 2018

本文实例讲述了nodejs使用redis作为缓存介质实现的封装缓存类。分享给大家供大家参考,具体如下:

之前在node下使用redis作为缓存介质,对redis进行了一层封装

First: 安装npm包 redis

const redis = require('redis');

Second: 进行封装

// 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(); // 创建连接
    const instance = this.client;
    // 主要重写了一下三个方法。可以根据需要定义。
    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参数。在config文件里进行配置。
    instance.setex = function (key, value, callback) {
      if (value !== undefined) {
        setex.call(instance, key, config.cache.maxAge, JSON.stringify(value), callback);
      }
    };
    return instance;
  },
};
// 返回的是一个redis.client的实例
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
})

希望本文所述对大家nodejs程序设计有所帮助。

NodeJs 相关文章推荐
用nodejs写的一个简单项目打包工具
May 11 NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs之koa2请求示例(GET,POST)
Aug 07 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 #NodeJs
nodejs实现的连接MySQL数据库功能示例
Jan 25 #NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 #NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 #NodeJs
使用npm安装最新版本nodejs
Jan 18 #NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 #NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 #NodeJs
You might like
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
2020最新版 PhpStudy V8.1版本下载安装使用详解
2020/10/30 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
Node.js 实现抢票小工具 & 短信通知提醒功能
2019/10/22 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Django框架模板介绍
2019/01/15 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
python 进程的几种创建方式详解
2019/08/29 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
Python使用Matlab命令过程解析
2020/06/04 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
新闻编辑专业毕业自荐书范文
2014/02/05 职场文书
爱心捐款倡议书
2014/04/14 职场文书
公司领导九九重阳节发言稿2014
2014/09/25 职场文书
研究生就业推荐表导师评语
2014/12/31 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
JavaScript实现淘宝商品图切换效果
2021/04/29 Javascript
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript
前端canvas中物体边框和控制点的实现示例
2022/08/05 Javascript