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中的非阻塞方法介绍
Jun 05 NodeJs
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
nodejs的10个性能优化技巧
Jul 15 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
Nodejs进阶:核心模块net入门学习与实例讲解
Nov 21 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs基于WS模块实现WebSocket聊天功能的方法
Jan 12 NodeJs
nodejs提示:cross-device link not permitted, rename错误的解决方法
Jun 10 NodeJs
nodejs简单抓包工具使用详解
Aug 23 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 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正则表达式使用的详细介绍
2013/04/27 PHP
微信接口生成带参数的二维码
2017/07/31 PHP
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
javascript 一些用法小结
2009/09/11 Javascript
jquery select下拉框操作的一些说明
2010/04/02 Javascript
基于jQuery实现点击同时更改两个iframe的网址
2010/07/01 Javascript
Jquery 获取对象的几种方式介绍
2014/01/17 Javascript
js加入收藏以及使用Jquery更改透明度
2014/01/26 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
基于JavaScript代码实现随机漂浮图片广告
2016/01/05 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
vue+element创建动态的form表单及动态生成表格的行和列
2019/05/20 Javascript
vue中使用带隐藏文本信息的图片、图片水印的方法
2020/04/24 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
centos7之Python3.74安装教程
2019/08/15 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
2020/02/29 Python
解决Jupyter无法导入已安装的 module问题
2020/04/17 Python
Python matplotlib可视化实例解析
2020/06/01 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
鱼油专家:Omegavia
2016/10/10 全球购物
Clarks鞋美国官网:全球领军鞋履品牌
2017/05/13 全球购物
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
如何写毕业求职自荐信
2013/11/06 职场文书
企业文化演讲稿
2014/05/20 职场文书
高三教师工作总结2015
2015/07/21 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python
Sql Server之数据类型详解
2022/02/28 SQL Server