python - 如何使用 python 将大型 .json 文件读入 redis,以便创建键值对?
问题描述
我有一个包含结构化位置数据(坐标、类别等)的大型 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"
}
解决方案
鉴于您的 Json 数据是嵌套/多级的,您不能将它们直接存储在 Redis 哈希中。因此,您必须将值序列化并将其存储为字符串(其他格式也可以,但为了简单起见,让我们使用字符串)。这意味着当您get
从 Redis 中获取值时,您必须将 Json(存储为字符串)反序列化为代码中的适当对象。因此,键是 the id
,值是 Json 的其余部分作为字符串。
现在,继续将巨大的 Json 加载到 Redis 中,这是一个两步过程:
- 解析您的输入 Json 文件并将其分解为可用于“Redis Mass Insertion”的格式 - https://redis.io/topics/mass-insert。您必须提取 的值
_id
并将其用作键,然后提取 Json 的其余部分并按照value
上面链接中显示的格式使用它。 - 使用上一步中的内容作为输入运行 Redis 批量插入。
set
您可以将每个输入添加到Redis 中的单个中。
现在您可以get
对.set
如果您有id
. 请记住,Redis 是一种内存缓存,它经过调整可实现更快的存储和检索。除非您以不同的方式存储/复制数据以满足不同的查询需求,否则您无法在 Redis 上运行复杂的查询。
如果您希望我添加更多详细信息,请随时对此答案发表评论。我只能在问题的评论部分回复这么多。因此,我将所有内容合并到这个答案中。如果您希望我解决任何具体问题,我可以添加更多内容。
更多关于质量插入的参考和示例:
推荐阅读
- javascript - Javascript添加/删除动画类,只动画一次
- javascript - 我是否需要知道 jquery 才能学习和处理 react js / angular js
- python - 如何在保持分辨率的同时无损地将 2D 浮点 numpy 数组保存到灰度图像中?
- javascript - 深入比较 javascript 对象并保留对象 1 的键和对象 2 的值
- java - 如何从当前登录的用户 Firebase,Android 中检索值
- python - 在 jupyter notebook 中显示多张图片
- r - 使用 gsub 提取部分字符串
- javascript - 有没有办法将自定义工具提示添加到 highcharts 上钻取的第二级列?
- c - 如何使用termios将控制权返回到C中的终端
- jquery - 让本地机器上的 jquery 脚本更改特定网站上的 HTML 客户端