Что произойдет, если Elasticache решит перефразировать во время работы моего скрипта? - PullRequest
1 голос
/ 10 января 2020

У меня есть несколько скриптов, которые касаются нескольких клавиш. Что произойдет, если Elasticache решит перефразировать во время работы моего скрипта? Будет ли он ждать завершения моего сценария, прежде чем переместит основные ключи? Или я должен предположить, что это не тот случай, и спроектировать мое приложение с учетом этого крайнего случая?

Одним из примеров может быть сценарий, который увеличивает 2 ключа одновременно. Я мог получить «кластерную ошибку», которая означает, что что-то пошло не так, и мне придется снова выполнить мой сценарий (и, возможно, в итоге один ключ будет увеличен вдвое, а другой - один раз)

1 Ответ

1 голос
/ 10 января 2020

Предполагая, что вы говорите о скрипте Lua, до тех пор, пока вы передаете ключи в аргументах (а не жестко закодированы в скрипте), вы должны быть хороши. Это будет все или ничего. Если вы не используете скрипт Lua - рассмотрите возможность сделать это

С EVAL команда :

Все команды Redis должны быть проанализированы перед выполнением, чтобы определить, какие клавиши, на которых будет работать команда. Чтобы это было верно для EVAL, ключи должны быть переданы явно. Это полезно во многих отношениях, но особенно для того, чтобы убедиться, что Redis Cluster может переслать ваш запрос на соответствующий узел кластера.

С AWS ElastiCache - Рекомендации: изменение размера кластера онлайн :

Во время переторинга мы рекомендуем следующее:

  • Избегайте дорогих команд - Избегайте выполнения любых вычислительных операций и операций ввода-вывода, таких как KEYS и команды SMEMBERS. Мы предлагаем такой подход, потому что эти операции увеличивают нагрузку на кластер и влияют на производительность кластера. Вместо этого используйте команды SCAN и SSCAN.

  • Следуйте Lua рекомендациям - избегайте длительных сценариев Lua и всегда объявляйте ключи, используемые в сценариях Lua заранее. Мы рекомендуем этот подход, чтобы определить, что сценарий Lua не использует команды кросс-слотов. Убедитесь, что ключи, используемые в скриптах Lua, принадлежат одному и тому же слоту.

...