我是Redis的新手,请原谅这个问题。
我正在尝试制作哈希列表。例如(在JSON中):
{
userList: [
{ id: 1, name: 'Foo', ranking: 10 },
{ id: 2, name: 'Bar', ranking: 5 }
]
}
然后我想:
如何在Redis中实现最后一个架构?有可能吗?
如何过滤元素并删除其中的一些元素?
答案 0 :(得分:1)
如何在Redis中实现最后一个架构?有可能吗?
Redis 架构。让我们调用您需要的数据存储方法。
一种可能的方法是使用HSET
或HMSET
按ID添加这些JSON对象,其中id为键,JSON文本为值。我们将此哈希称为users:byid
。
这是问题的第一部分。现在,您可以通过id 获取对象。
现在,下一个问题是你想要检索你所谓的排名范围内的对象。为了实现这一点,您需要使用ZADD
将对象存储在有序集合中。按分数对排序集进行排序,并将项目存储为分数。这听起来非常适合您的用例!
实际上,您将把对象ID存储在整个有序集合中:
zadd users:byranking 10 1 5 2
...其中10
是分数(即您的实际排名值),1是 id ,依此类推。
那么,您如何按排名过滤项目?使用ZRANGEBYSCORE
:
zrangebyscore users:byranking 0 (10
zrangebyscore users:byranking 0 10
所谓的ZRANGEBYSCORE
将为您提供检索到的用户的ID。你如何获得他们的JSON文本?使用HMGET
:
HMGET users:byid 1 2
...如果1
排名具有包容性,那么该用户将获得 id 2
和10
的用户。