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 npm包管理的配置方法及常用命令介绍
Jun 05 NodeJs
快速掌握Node.js之Window下配置NodeJs环境
Mar 21 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
详解nodejs 文本操作模块-fs模块(一)
Dec 22 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
nodejs的压缩文件模块archiver用法示例
Jan 18 NodeJs
搭建简单的nodejs http服务器详解
Mar 09 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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
MySQL连接数超过限制的解决方法
2011/07/17 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
2011/08/02 PHP
深入解析php中的foreach函数
2013/08/31 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
jquery Firefox3.5中操作select的问题
2009/07/10 Javascript
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
JQuery中serialize() 序列化
2015/03/13 Javascript
两款JS脚本判断手机浏览器类型跳转WAP手机网站
2015/10/16 Javascript
又一枚精彩的弹幕效果jQuery实现
2016/07/25 Javascript
js简单正则验证汉字英文及下划线的方法
2016/11/28 Javascript
angularjs实现的前端分页控件示例
2017/02/10 Javascript
JS实现汉字与Unicode码相互转换的方法详解
2017/04/28 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
利用JavaScript的Map提升性能的方法详解
2019/08/14 Javascript
JavaScript代码简化技巧实例解析
2020/09/09 Javascript
Javascript实现单选框效果
2020/12/09 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
Python循环语句之break与continue的用法
2015/10/14 Python
深入解析Python中函数的参数与作用域
2016/03/20 Python
Python基于matplotlib实现绘制三维图形功能示例
2018/01/18 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python3+PyQt5 实现Rich文本的行编辑方法
2019/06/17 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python银行系统实现源码
2019/10/25 Python
Python 3.8 新功能来一波(大部分人都不知道)
2020/03/11 Python
分享一枚pycharm激活码适用所有pycharm版本我的pycharm2020.2.3激活成功
2020/11/20 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
jupyter notebook远程访问不了的问题解决方法
2021/01/11 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
高三英语教学反思
2014/01/13 职场文书
酒店开业庆典策划方案
2014/05/28 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书