首頁 > web前端 > js教程 > nodejs使用redis封裝快取的方法

nodejs使用redis封裝快取的方法

php中世界最好的语言
發布: 2018-04-12 17:45:27
原創
3474 人瀏覽過

這次帶給大家nodejs使用redis封裝快取的方法,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
})
登入後複製

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

VUE UEditor圖片跨域上傳怎樣實作

在vue專案中怎樣使用上傳元件

以上是nodejs使用redis封裝快取的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板