Из-за неоднозначности в документации этот вопрос часто задают (см., Например, это и это ), но я воспользуюсь этим случаем, чтобы попытаться указатьФактическое правило, регулирующее использование ключей в сценариях Redis.
Фактическое правило таково: Ваш сценарий должен иметь доступ только к тем ключам, которые находятся на одном сервере, а Redis должен знать, что это за сервер, чтобы онможно направить сценарий туда.
Если вы не используете Redis Cluster, то эти условия всегда будут соблюдаться, поскольку существует только один сервер.
Если вы используете Redis Cluster,затем вы должны указать хотя бы один ключ, и все ключи, которые использует скрипт, должны находиться на том же сервере, что и указанные ключи.
Итак, чтобы ответить на ваш вопрос: ваш скрипт будет работать нормально, если вы неиспользуя кластер.Последствия этого состоят в том, что это не сработает, если вы позже переключитесь на Cluster, поскольку Redis не будет знать, куда отправить скрипт.
Также возможно, что Redis может перейти к принудительному применению документированного правила, делая недействительным всескрипты, которые динамически генерируют ключи.По моему мнению, это было бы плохой ошибкой, и я не думаю, что это произойдет.Но указание ключей полезно, как документация, если не сказать больше, поэтому я всегда делаю это, если случайно узнаю ключи.