Как я могу прочитать большой. json файл в redis, используя python, чтобы я мог создавать пары ключ-значение? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть большой json файл с собранными структурированными данными о местоположении (координаты, категория и т. Д. c.), И мне нужно создать пары ключ-значение в 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"
    }

1 Ответ

0 голосов
/ 30 апреля 2020

Учитывая, что ваши Json данные являются вложенными / многоуровневыми, вы не можете сохранять их в Redis Ha sh напрямую. Таким образом, вам придется сериализовать значение и сохранить его как строку (другие форматы также будут работать, но давайте для начала будем использовать строку для простоты). Это будет означать, что когда вы get используете значение Redis, вам придется десериализовать Json (хранится в виде строки) для соответствующего объекта в вашем коде. Следовательно, ключом будет id, а значением будет остальная часть Json в виде строки.

Теперь перейдем к загрузке огромного Json в Redis, это два -шаговый процесс:

  1. Разобрать ваш входной файл Json и разбить его на формат, который можно использовать для 'Redis Mass Insertion' - https://redis.io/topics/mass-insert. Вы должны извлечь значение _id и использовать его в качестве ключа, извлечь остальные значения Json и использовать его в качестве value в соответствии с форматом, показанным в ссылке выше.
  2. Выполнить Redis массовая вставка с содержимым из предыдущего шага в качестве ввода. Вы можете добавить каждый вход в один set в Redis.

Теперь вы можете запускать get запросов к set, если у вас есть id. Помните, Redis - это кэш в памяти, который настроен для более быстрого хранения и извлечения. Вы не можете запускать сложные запросы в Redis, если не по-разному сохраняете / дублируете данные для разных запросов.

Не стесняйтесь комментировать этот ответ, если вы хотите, чтобы я добавил больше деталей. Есть только так много, что я мог ответить в разделе комментариев вопроса. Поэтому я объединил все в этот ответ. Я могу добавить больше к этому, если вы хотите, чтобы я обратился к чему-либо конкретному c.

Дополнительные ссылки и образцы для массовой вставки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...