如何使用python将一个大的.json文件读入redis,以便创建键值对?

2024-09-30 20:20:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个很大的json文件,其中包含一组结构化的位置数据(坐标、类别等),我需要在redis中创建键值对以供进一步查询。我已经能够在这里和那里找到一些信息,但我正在努力把它们整合成一些有用的东西

这是json的一般结构

{ 
    "_id" : NumberInt(83412), 
    "contact" : {
        "GooglePlaces" : null, 
        "Foursquare" : "https://foursquare.com/v/caf%C3%A9-vavin/4adcda06f964a520eb3221e3"
    }, 
    "name" : "Café Vavin", 
    "location" : {
        "city" : "Paris", 
        "coord" : {
            "coordinates" : [
                2.3307001590729, 
                48.843868593865
            ], 
            "type" : "Point"
        }, 
        "address" : "18 rue Vavin"
    }

Tags: 文件数据redis信息idjsoncontact类别
1条回答
网友
1楼 · 发布于 2024-09-30 20:20:28

考虑到Json数据是嵌套/多级的,您不能将它们直接存储在Redis散列中。因此,您必须序列化该值并将其存储为字符串(其他格式也可以,但为了简单起见,我们先使用字符串)。这意味着,当您get从Redis获取值时,必须将Json(存储为字符串)反序列化到代码中的相应对象。因此,键将是id,值将是Json的其余部分作为字符串

现在,继续将巨大的Json加载到Redis中,这是一个分两步的过程:

  1. 解析输入Json文件,并将其分解为可用于“Redis Mass Insertion”的格式-https://redis.io/topics/mass-insert。您必须提取_id的值并将其用作键,提取Json的其余部分并将其用作value,如上面链接中所示的格式
  2. 使用上一步中的内容作为输入运行Redis mass insertion。您可以将每个输入添加到Redis中的单个set

现在,如果您有id,您可以在set上运行get查询记住,Redis是一种内存缓存,经过优化可实现更快的存储和检索。您不能在Redis上运行复杂的查询,除非您根据不同的查询需要以不同的方式存储/复制数据。

如果你想让我补充更多细节,请随意评论这个答案。在问题的评论部分,我只能回答这么多。因此,我把一切都整合到这个答案中。如果你想让我解决任何具体问题,我可以补充更多

质量插入的更多参考和示例:

相关问题 更多 >