NodeJS嵌套Redis命令

时间:2016-12-06 21:10:47

标签: node.js redis

我对这些东西很陌生,但经过几次尝试,我想请你在这里寻求帮助,因为我不确定,究竟我做错了什么。

情况:在Redis数据库中,我得到了一个键test,其值为1,2,3,4。要将新值放入键中,我使用rpush,因为我想在键的末尾添加新值(当我独立运行时,它可以作为魅力):

client.rpush("test", "5");

但是,我的想法是,首先我要查看,如果密钥存在,如果不存在,那么我将在其中添加一个值。为此我决定使用LRANGE命令,现在结果如下:

client.lrange("test", 0, 0, function(err, reply) {
        if (reply.length === 0) {
            client.rpush("test", 5);
        }

问题是,在上述情况下,rpush似乎被“忽略”,它不会存储该值。我究竟做错了什么?看起来lrange回调中的任何Redis命令都会被忽略。

1 个答案:

答案 0 :(得分:2)

听起来您可能想要使用LLEN代替LRANGE

https://redis.io/commands/llen

我不是节点人,但这样的事情应该有效。您的示例应该可以工作,如果这不清楚,我会继续更新您的说明以包含一些日志记录。

client.llen('test', function(err, reply) {  
  if (err) {
     // Log error
  }
  // Log reply 
  if (reply === 0) { 
    client.rpush('test', 5, function(err, reply) {
      if (err) {
         // Log error
      } 
      // Log reply
    })
  } 
})