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框架Express的模板视图机制分析
Jul 19 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
NodeJs测试框架Mocha的安装与使用
Mar 28 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
Nodejs读取文件时相对路径的正确写法(使用fs模块)
Apr 27 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
Linux Centos7.2下安装nodejs&npm配置全局路径的教程
May 15 NodeJs
nodejs nedb 封装库与使用方法示例
Feb 06 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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
php正则校验用户名介绍
2008/07/19 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
测试PHP连接MYSQL成功与否的代码
2013/08/16 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
Joomla开启SEF的方法
2016/05/04 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
php 使用redis锁限制并发访问类示例
2016/11/02 PHP
多个Laravel项目如何共用migrations详解
2018/09/25 PHP
javascript中日期转换成时间戳的小例子
2013/03/21 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
基于javascript的COOkie的操作实现只能点一次
2014/12/26 Javascript
javascript中关于&& 和 || 表达式的小技巧分享
2015/04/10 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【二】
2016/05/10 Javascript
用原生js做单页应用
2017/01/17 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
2018/11/01 NodeJs
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
ECharts地图绘制和钻取简易接口详解
2019/07/12 Javascript
利用Python操作消息队列RabbitMQ的方法教程
2017/07/19 Python
python爬虫获取多页天涯帖子
2018/02/23 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python3实现高效的端口扫描
2019/08/31 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
Python3中的tuple函数知识点讲解
2021/01/03 Python
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
联强国际笔试题面试题
2013/07/10 面试题
电子商务专业毕业生自荐书
2014/06/22 职场文书
财政局党的群众路线教育实践活动整改方案
2014/09/21 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
店铺转让协议书
2014/12/02 职场文书
安全先进个人材料
2014/12/29 职场文书
学前班教学反思
2016/02/24 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
HttpClient实现文件上传功能
2022/08/14 Java/Android