过滤Redis中的元素

时间:2015-10-09 19:23:43

标签: redis

我是Redis的新手,请原谅这个问题。

我正在尝试制作哈希列表。例如(在JSON中):

{
  userList: [ 
    { id: 1, name: 'Foo', ranking: 10 },
    { id: 2, name: 'Bar', ranking: 5 }
  ]
}

然后我想:

  • 检索排名小于10的所有哈希(用户)。
  • 删除所有排名为0的哈希值。

如何在Redis中实现最后一个架构?有可能吗?

如何过滤元素并删除其中的一些元素?

1 个答案:

答案 0 :(得分:1)

  

如何在Redis中实现最后一个架构?有可能吗?

Redis 架构。让我们调用您需要的数据存储方法

一种可能的方法是使用HSETHMSET按ID添加这些JSON对象,其中id为,JSON文本为。我们将此哈希称为users:byid

这是问题的第一部分。现在,您可以通过id 获取对象

现在,下一个问题是你想要检索你所谓的排名范围内的对象。为了实现这一点,您需要使用ZADD将对象存储在有序集合中。按分数对排序集进行排序,并将项目存储为分数。这听起来非常适合您的用例!

实际上,您将把对象ID存储在整个有序集合中:

zadd users:byranking 10 1 5 2

...其中10是分数(即您的实际排名值),1是 id ,依此类推。

那么,您如何按排名过滤项目?使用ZRANGEBYSCORE

  • 排名在0到10之间,不包括10. zrangebyscore users:byranking 0 (10
  • 排名在0到10之间,包括10. zrangebyscore users:byranking 0 10

所谓的ZRANGEBYSCORE将为您提供检索到的用户的ID。你如何获得他们的JSON文本?使用HMGET

 HMGET users:byid 1 2

...如果1排名具有包容性,那么该用户将获得 id 210的用户。