Управляйте более чем миллионом результатов в REDIS - PullRequest
0 голосов
/ 07 мая 2020

Я новичок в использовании REDIS, но я уже вижу некоторые ограничения или не уверен, что использовать.

Таким образом, я выполняю некоторые пакетные вычисления на основе данных из SQL , которые запускают отдельный поток / экземпляр GAE, например 100k - это размер блока, тогда мне нужно как-то сохранить эти 100k данных в REDIS и получить к ним доступ из другого потока / GAE (но мне действительно не нужен весь SET / HASH / Value , Мне нужен единственный из этих 100k ).

Например, каждое значение, которое я хочу сохранить, как это:

{myData1: {a: 'a', b:'c'}, myData2:{a: 'a', b:'c'}, myData100000: {a: 'a', b:'c'}}

И я хочу получить например, myData70000 values.

Ключевым моментом является то, что мне нужно использовать REDIS как (своего рода карту) коллекцию, где я могу добавлять данные (так что другие потоки может добавить еще 100k в предыдущие 100k et c. или перезаписать отдельные результаты), а также получить один ключ из коллекции, как в примере выше, в сложности O (1).

Я мог бы легко создать один ключ / значение ref в REDIS, например myData1: * 1 023 * .strigfy (data), но вычисления могут создать около 50 мил ссылок, которые затем снова группируются для блоков размером 1 миллион (поэтому естественным выбором было бы иметь их как некую коллекцию), вставляются в SQL, а затем очищен.

Что было бы естественным способом делать такие сложные вещи в REDIS?

1 Ответ

1 голос
/ 07 мая 2020

Хэши Redis очень подходят для такой обработки, поскольку обеспечивают сложность времени O (1).

Также рассмотрите возможность сегментирования хэшей для уменьшения общего объема памяти. См. Ссылку ниже, как Instagram хранит такую ​​информацию (https://instagram-engineering.com/storing-hundreds-of-millions-of-simple-key-value-pairs-in-redis-1091ae80f74c)

Redis документирует этот сценарий ios очень хорошо (https://redis.io/topics/memory-optimization) Надеюсь, это обеспечит Вам достаточно информации

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