如何获得所有回答价值条件的钥匙

时间:2015-05-27 15:24:08

标签: node.js redis

我正在尝试使用Redis,我想根据值获得结果。

例如:

redis.hmset("user:"+id, "statut", 3);
redis.hmset("user:"+id, "statut", 2);
redis.hmset("user:"+id, "statut", 2);

我希望所有的按键都是statut:2

是否可以使用Redis和节点JS?

非常感谢。

1 个答案:

答案 0 :(得分:1)

Redis并不是专为此类查询设计的。您必须扫描每个条目并检查值:

redis.keys('user:*', function(err, results) {
  results.forEach(function(key) {
    redis.hget(key, 'statut', function(err, statut) {
      if (parseInt(statut) === 2) {
        console.log(key, statut);
      }
    });
  });
});

另一种方法是根据您关注的字段值将用户ID存储在一个集合中:

redis.sadd('statut:3', userId);
redis.sadd('statut:2', userId);
redis.sadd('statut:2', userId);

然后您的查询将如下所示:

redis.smembers('statut:2', function(err, userIds) {
  userIds.forEach(function(userId) {
    console.log(userId);
  });
});