无法获取redis数据,但可以写入redis

时间:2016-05-31 20:05:12

标签: node.js redis ioredis

我有以下设置来设置和检查redis的值

var ttl = '60';

function someRandom(value, callback){

   client.exists(value, function check(err, data){
      if(data === 0){
         //do functionality
         client.set(value,'nx','ex',ttl, function(err,data){
           callback(null);
         });

      }else{
        client.incr(value);
        callback(null);
      }
   })

}

现在从上面看,设置值没有问题。根据{{​​1}}函数,如果值存在,则返回" 1"否则它返回" 0"。但是当我在redis中检查相似的值时,它返回为" 0"什么时候它已经存在

添加更多信息

当我检查第二次尝试的值时, err = null data = 0 ,当它应该是" 1"因为价值已经存在。

同样使用 redis-cli 命令返回1

ioredis配置如下所示

exists

其中senitelname为 mymaster

1 个答案:

答案 0 :(得分:0)

我认为你错误地调用redis.set:

client.set(value,'nx','ex',ttl, function(err,data){
    callback(null);
});

您可以使用ttl" 60"将键(值为"值")的值设置为' nx',下次为您incr它,因为它不是一个整数,结果是1,ttl小于" 60",如果ttl小于1,键就消失了,这就是你所看到的。

请参阅文档:http://redis.io/commands/set

建议在redis数据库上使用redis-cli命令工具手动运行命令,看看会发生什么。