查询集基于其成员的特定哈希值

时间:2014-08-13 18:21:34

标签: redis node-redis

这在大多数数据库中都很容易,但不确定如何在redis中执行此操作。以下是我如何将成员添加到集合中:

 redis.sadd("usersRandom", userID);
 redis.hmset("users:"+userID, "socketID", socket.id, "hangoutId",hangoutIds, "language",languageName);
  • 集合usersRandom是一组用户
  • 此集合中的每个user都存储了三个哈希值 - socketIDhangoutIdlanguage

我想执行此操作:

 redis.spop("usersRandom");

但是,我只想弹出具有特定language值的用户。


我提出的两种方法是:

  1. 返回集usersRandom的所有成员,然后在language键上自行匹配 - 然后弹出。

  2. 根据languages创建不同的集合。所以我有很多集合,如usersRandom_englishusersRandom_spanish(这些变量名称可以使用一些工作)。这看起来更麻烦,但也许这是Redis的最佳方式。

  3. 有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

2是正确的方向。您可以考虑使用所有语言的排序集(假设每个用户只有一种语言)来存储用户ID - 将该分数用作粗略的语言指示符(例如,英语为1分,西班牙语为2 ...)。这将允许您按分数(语言)进行范围以获得相关的ID。