gpt4 book ai didi

redis - 按值范围过滤 Redis

转载 作者:可可西里 更新时间:2023-11-01 11:14:59 27 4
gpt4 key购买 nike

我有一个看起来像这样的集合(除了它有大约 8000 个项目):

{"id":563244,"stock_id":693,"value":"9.17","symbol":"BCS"}
{"id":565527,"stock_id":10093,"value":"21.09","symbol":"GDXS"}
{"id":564311,"stock_id":4241,"value":"91.52","symbol":"NDAQ"}
{"id":565269,"stock_id":8883,"value":"127.60","symbol":"SAA"}

我需要能够按值范围过滤这些,例如,我可以说“给我所有值介于 5.50 和 24.36 之间的条目”或“给我所有值介于 47.45 和 301.8 之间的条目”。可以传递给此过滤器的数字没有限制。

现在,我知道可以为每个值创建一个集合,但我认为这效率不高,因为几乎所有大约 8000 个条目都具有唯一值。

如果我们可以预定义范围(例如,0-10、10-20 等),那么我可以为每个范围创建集合,其中包含属于该范围的键。但遗憾的是,情况并非如此,我需要在保持稳定性能的同时尽可能灵活。

我意识到这对于键值存储来说可能很棘手,但也许有人有解决方案?

最佳答案

如果你愿意做另一个集合,你可以使用排序集(ZSET)把值作为分数,条目本身作为成员,像这样:

127.0.0.1:6379> ZADD stocks 9.17 '{"id":563244,"stock_id":693,"value":"9.17","symbol":"BCS"}'
(integer) 1
127.0.0.1:6379> ZADD stocks 21.09 '{"id":565527,"stock_id":10093,"value":"21.09","symbol":"GDXS"}' 91.52 '{"id":564311,"stock_id":4241,"value":"91.52","symbol":"NDAQ"}' 127.60 '{"id":565269,"stock_id":8883,"value":"127.60","symbol":"SAA"}'
(integer) 3

然后只拉出只有你需要的分数的成员:

127.0.0.1:6379> ZRANGEBYSCORE stocks 20 100
1) "{\"id\":565527,\"stock_id\":10093,\"value\":\"21.09\",\"symbol\":\"GDXS\"}"
2) "{\"id\":564311,\"stock_id\":4241,\"value\":\"91.52\",\"symbol\":\"NDAQ\"}"

关于redis - 按值范围过滤 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313403/

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