Maison  >  Article  >  interface Web  >  Classe de cache encapsulée implémentée en tant que cache via Redis dans Nodejs

Classe de cache encapsulée implémentée en tant que cache via Redis dans Nodejs

亚连
亚连original
2018-06-07 11:59:232428parcourir

Cet article présente principalement la classe de cache encapsulée implémentée par nodejs en utilisant redis comme support de cache, et implique les compétences opérationnelles liées à nodejs exécutant redis pour les paramètres de cache.

Les exemples. dans cet article, décrivez l'utilisation de nodejs. Redis est une classe de cache encapsulée implémentée comme support de cache. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Auparavant, redis était utilisé comme support de cache sous le nœud, et redis était encapsulé avec une couche d'emballage

Premièrement : Installez le package npm redis

const redis = require('redis');

Deuxième : Encapsulation

// 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();

Comment utiliser

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
})

Ce qui précède, c'est moi, je l'ai compilé pour tout le monde, j'espère qu'il sera utile à tout le monde à l'avenir.

Articles associés :

Requête ajax + rendu vue.js + chargement de page

Comment résoudre le problème d'affichage de Vue.js data, Page flash

Comment définir la méthode de titre de chaque page à l'aide de vue-router

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn