gpt4 book ai didi

python - 如何在redis中存储多个字段并根据某些字段获得前10名的结果

转载 作者:可可西里 更新时间:2023-11-01 11:16:19 26 4
gpt4 key购买 nike

我想从 CSV 文件中将多个字段存储在 redis

我的 file.CSV 看起来是这样的。

SC_CODE,SC_NAME,OPEN,HIGH,LOW,CLOSE,
500002,ABB LTD.,1372,1372.40,1339.95,1348.45,
500003,AEGIS LOGIS,275.00,275.00,261.50,266.70,
500008,AMAR RAJA BA,787.00,788.00,768.05,771.85,

我写了下面的代码来往redis中插入数据。

import csv
with open('file.CSV', 'r') as csvfile:
csvReader = csv.reader(csvfile)
next(csvReader)
for row in csvReader:
print ('HMSET {} open {} other \"{},{},{},{}\"\r'.format(row[0], row[2], row[1], row[3], row[4], row[5]))

我正在运行这个:python redis.py | redis-cli --pipe

这基本上意味着在 redis-cli

HMSET 500002 open 1372 other "ABB LTD.,1372.40,1339.95,1348.45"

但我不知道如何根据上面的不同领域获得前 10 名股票。所以我想获得前 10 名、最低 10 名以及排序和其他东西。

最佳答案

你不能仅仅通过将散列放在键空间中来做到这一点;在 Redis 中,您必须维护自己的数据结构以适应您想要执行的每种查询。在 top-N 查询的情况下,正确的数据结构是一个排序集(redis 中的 Z 命令)。例如,如果您

ZADD open 1372 50002

它会将键 50002 添加到集合“open”,得分为 1372。然后你可以

ZRANGE open 0 9

ZREVRANGE open -10 -1

根据他们在“开放”组中的分数获得最后 10 个或前 10 个键。 (添加 WITHSCORES 标志使查询返回分数和键)。排序集也支持 ZRANGEBYSCORE获取分数介于两个值之间的所有键,等等...查看文档了解更多信息!

如果您为希望能够查询的每一列都维护一个这样的集合,那么您就可以做您想做的事情。您仍然可以使用散列将每个对象的所有详细信息存储在一个位置,以便您可以在找到 ID 后按 ID 进行查找。 HMGET对此有好处。

关于python - 如何在redis中存储多个字段并根据某些字段获得前10名的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47843515/

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