Я выполняю некоторые вычисления, где я сохраняю результаты в базе данных REDIS перед тем, как они будут отправлены в базу данных.
В настоящее время я выполняю пакетные операции для размера 10 тыс. Элементов на фрагмент, которые я процесс в отдельном экземпляре GAE (однопоточные вычисления с использованием NodeJS), хотя скорость вычислений действительно хорошая, действие PU SH, которое выполняет HSET
операций, занимает много времени, поэтому оно вызывает некоторую задержку в разных потоках (поскольку REDIS является однопоточным - fyi я использую экземпляр Google REDIS Basi c).
Что я делаю не так? Как я могу сделать так, чтобы его выталкивали быстрее (например, в пакетном режиме или что-то еще), чем сейчас? мы можем сделать что-то вроде SQL transactions
и pu sh, например, 10k элементов в одной транзакции HSET вместо добавления REDIS Ha sh каждый раз.
Каждый фрагмент (10k элементов) имеет размером ~ 43 МБ после сохранения в REDIS (итого 100 тыс. элементов дают 430 МБ). Для некоторых архитектурных проектов они должны храниться в одном REDIS ha sh.
Текущая скорость (миллисекунды), каждое задание выполняется параллельно в отдельном потоке:
"push": 13608
"finishedAt": "2020-05-08T22:51:26.045Z"
push": 13591,
"finishedAt": "2020-05-08T22:51:29.640Z"
"push": 15738,
"finishedAt": "2020-05-08T22:51:59.177Z"
"push": 21208,
"finishedAt": "2020-05-08T22:51:44.432Z"
"push": 13332,
"finishedAt": "2020-05-08T22:51:28.303Z"
"push": 10598,
"finishedAt": "2020-05-08T22:51:44.455Z"
"push": 27249,
"finishedAt": "2020-05-08T22:51:58.458Z"
"push": 36270,
"finishedAt": "2020-05-08T22:52:00.708Z"
"push": 25106,
"finishedAt": "2020-05-08T22:52:02.234Z"
"push": 12845,
"finishedAt": "2020-05-08T22:52:02.254Z"
Мы будем благодарны за любые отзывы.