DDR爱好者之家 Design By 杰米

本文实例讲述了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程序设计有所帮助。

DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米

稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!

昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。

这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。

而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?