如何在redis中存储多个字段,并根据某些字段获得前10个结果
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在redis中存储多个字段,并根据某些字段获得前10个结果相关的知识,希望对你有一定的参考价值。
我想从redis
文件中存储CSV
中的多个字段
我的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 "{},{},{},{}"
'.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名和排序等等。
你不能仅仅通过在键空间中放入哈希来做到这一点;在redis中,您必须维护自己的数据结构,以适合您想要执行的每种查询。在前N个查询的情况下,正确的数据结构是一个有序集(redis中的Z
命令)。例如,如果你
ZADD开放1372 50002
它会将关键50002
添加到“开放”集合中,得分为1372
。然后你可以
ZRANGE开放0 9
要么
ZREVRANGE开-10 -1
根据他们在“开放”中设置的得分来获得底部10或前10个键。 (添加WITHSCORES
标志使查询返回分数和键)。排序集也支持ZRANGEBYSCORE来获取两个值之间的所有键,等等...查看文档了解更多!
如果你为每个想要查询的列维护一个这样的集合,那么你可以做你想要的事情。您仍然可以使用哈希值将每个对象的所有详细信息存储在一个位置,以便在找到ID后可以通过ID查找它。 HMGET对此有好处。
以上是关于如何在redis中存储多个字段,并根据某些字段获得前10个结果的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 NodeJS 仅将 NeDB 数据库中的某些字段存储到数组中
如何根据多个by-record标准从data.table中提取特定字段?
我们如何使用文件系统中的某些动态字段搜索存储在 zip 文件中的 xml 文件?