gpt4 book ai didi

redis - Redis中的过滤元素

转载 作者:可可西里 更新时间:2023-11-01 11:36:15 25 4
gpt4 key购买 nike

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

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

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

然后我想:

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

你如何在 Redis 中实现最后一个模式?可能吗?

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

最佳答案

How do you implement the last schema in Redis? Is it possible?

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

...这将同时获得 id 12 的用户,如果 10 排名包含在内.

关于redis - Redis中的过滤元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33191034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com