>웹 프론트엔드 >JS 튜토리얼 >nodejs에서 redis를 통해 캐시로 구현된 캡슐화된 캐시 클래스

nodejs에서 redis를 통해 캐시로 구현된 캡슐화된 캐시 클래스

亚连
亚连원래의
2018-06-07 11:59:232492검색

이 글에서는 주로 redis를 캐시 매체로 사용하여 nodejs로 구현한 캡슐화된 캐시 클래스를 소개합니다. 캐시 설정을 위해 redis를 운영하는 nodejs와 관련된 작업 기술이 포함되어 있습니다.

이 글의 예는 구현을 설명합니다. redis를 캐시 매체로 사용하는 nodejs의 캐시 클래스를 캡슐화합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

이전에는 Redis를 노드 아래의 캐시 매체로 사용하고 Redis를 캡슐화했습니다.

첫 번째: npm 패키지 redis 설치

const redis = require('redis');

두 번째: 캡슐화

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

사용방법

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

위 내용은 제가 모두를 위해 정리한 내용입니다. 앞으로 모든 분들께 도움이 되길 바랍니다.

관련 기사:

ajax 요청 + vue.js 렌더링 + 페이지 로딩

Vue.js가 데이터를 표시할 때 페이지 깜박임 문제를 해결하는 방법

을 사용하여 각 페이지의 제목 방법을 설정하는 방법 뷰 라우터

위 내용은 nodejs에서 redis를 통해 캐시로 구현된 캡슐화된 캐시 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.