Как истечь ключ после часа Redis с веб-API экспресс-узла - PullRequest
0 голосов
/ 10 мая 2018

Я новичок в Redis, но каким-то образом могу создать функцию с помощью набора и получить ключ. Я использую Azure Redis, чтобы сделать все API для кэширования или вы можете создать локальный клиент.

var redis = require("redis");
var Promise = require('bluebird');
console.log('hi data ');
  // Add your cache name and access key.
var client = redis.createClient(6380,'<name>.redis.cache.windows.net', {auth_pass: '<key>', tls: {servername: '<name>.redis.cache.windows.net'}});


exports.getV2PostById = function(req, res, next){
    var key = req.params.id+'-v21';
    console.log("Get============"+key);
    return getDataCache(key, req, res, next);
}

function getDataCache(key, req, res, next) {
  return new Promise((resolved, reject) => {
    client.get(key, function (err, data) {
      if (err) throw err;
        console.log(data);
      if (data != null) {
          console.log('response key')
         return res.json(JSON.parse(data));
      } else {
          next();
      }
    });
  })

}

exports.setExp = function(key, data){
    console.log("Set============"+key);
    console.log(data);
    //client.set('key', 'value!', 'EX', 10);
    client.setex(key+"1", 300, JSON.stringify(data), function (err, reply) {
        console.log('set the key');
        console.log(reply);
    });
}

работает хорошо, но в документе redis говорится, что setex истечет в будущем.

client.set(key+"1", JSON.stringify(data), 'EX', 300, function (err, reply) {
            console.log('set the key');
            console.log(reply);
        });

но он не работает, когда я вызываю метод get, он возвращает мне null Может ли кто-нибудь наставить меня на ошибку?

1 Ответ

0 голосов
/ 18 мая 2018

Я нашел решение

redisCache.set(key, JSON.stringify(data), function (err, reply) {
      if(err) throw err;
      redisCache.expire(key, timeLeft, function (err, reply) {
        if(err) throw err;
        console.log(reply);
      });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...