Redis - лучшая структура данных для хранения и последующего извлечения больших данных - PullRequest
0 голосов
/ 04 мая 2019

Я недавно внедрил Redis в один из моих проектов Laravel. В настоящее время это скорее техническое упражнение, а не производство, так как я хочу посмотреть, на что оно способно.

Я создал список платежных операций. То, что я подталкиваю к списку, - это полезная нагрузка, которую я получаю от webhook каждый раз, когда обрабатывается транзакция. Полезная нагрузка - это, по сути, объект, содержащий всю информацию, относящуюся к этой конкретной транзакции.

Я создал интерфейс VueJS, который затем отображает все данные в таблице и имеет нумерацию страниц, поэтому он показывает 10 строк за раз.

Изначально это работало очень быстро, но теперь, когда список содержит 30 000 строк, что составляет примерно 11 МБ данных, запрос занимает около 11 секунд.

Мне кажется, проблема в том, что я использую список и извлекаю все строки из списка, используя LRANGE.

Причина, по которой я использовал список, заключалась в том, что в нем есть команда LPUSH, поэтому последние транзакции идут в начало списка.

Я решил провести тест, в котором я взял все данные из списка и вывел значение на пустую страницу, и это заняло примерно одно и то же время, поэтому это не проблема для Vue, Axios и т. Д.

Во-первых, это нормальная скорость чтения? Я всегда слышал, что Redis блистает быстро.

Во-вторых, есть ли лучший способ повысить производительность чтения при использовании Redis?

В-третьих, я использую неправильный тип данных?

Со временем я должен иметь возможность хранить 1 м строк данных.

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Как я понял, вы получаете все 30000 строк в любом обновлении транзакции, а затем разбиваете его на страницы во внешнем интерфейсе.На мой взгляд, истинная стратегия заключается в получении более легких пакетов данных в каждом запросе.Например, используйте пагинацию Laravel в ответ на ваш запрос.

0 голосов
/ 04 мая 2019

По моему мнению:

  • Во-первых: Как вы знаете, Redis работает быстро, а Redis действительно быстро.Поскольку данные Redis всегда находятся в памяти, вы говорите, что прочитали 11 МБ данных об использовании 11s, вы можете проверить свою пропускную способность
  • Во-вторых: извините, я не знаю, как увеличить эту среду.
  • В-третьих: я думаю, что ваш выбор в порядке.

Итак, вы можете сначала проверить свою пропускную способность (сервер redis).

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