>웹 프론트엔드 >JS 튜토리얼 >Nodejs는 redis를 사용하여 캐시를 캡슐화합니다.

Nodejs는 redis를 사용하여 캐시를 캡슐화합니다.

php中世界最好的语言
php中世界最好的语言원래의
2018-04-12 17:45:273454검색

이번에는 nodejs에서 redis를 사용하여 캐시를 캡슐화하는 방법을 알려드리겠습니다. nodejs가 redis를 사용하여 캐시를 캡슐화할 때 주의사항은 무엇인가요?

이전에는 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
})

이 기사의 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 자료:

VUE+UEditor 이미지의 도메인 간 업로드를 구현하는 방법

vue 프로젝트에서 업로드 구성 요소를 사용하는 방법

위 내용은 Nodejs는 redis를 사용하여 캐시를 캡슐화합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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