使用快速节点web API在hr Redis之后如何使密钥失效

时间:2018-05-10 05:59:40

标签: node.js express redis

我是redis的新手,但不知何故能够使用set创建函数并获取密钥。 我使用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 :(得分:0)

我找到了解决方案

Product name         article_count
product3             12
product6             7
product4             5
product2             5
product7             5
product5             3
etc                  etc