Почему существуют ключи и массивы ARGV при вызове скриптов Redis Lua?

при вызове Lua-скриптов из Redis можно передавать значения в двух массивах: KEYS и ARGV. В чем разница? Как Redis обрабатывает значения в массиве ключей? Что делать, если в моем скрипте мне придется использовать ключи, динамически генерируемые во время выполнения?

1 ответов


на все ваши вопросы отвечают в EVAL страница, но так как ты просил...:

в чем разница?

KEYS используется для передачи имен ключей, тогда как ARGS должно быть что-то еще. Это не совсем соблюдается (т. е. в большинстве случаев вы были бы в порядке, смешивая их), но может привести к потенциальным проблемам, если не следовать.

как Redis обрабатывает значения в массиве ключей?

в содержание KEYS проверяются, чтобы убедиться, что все ключи доступны для осколка Redis, на котором выполняется сценарий. Этот механизм позволяет запускать сценарии в развертывании кластера Redis.

что делать, если в моем скрипте я должен использовать ключи, динамически генерируемые во время выполнения?

см. предыдущие ответы-это выполнимо, но вы идете против рекомендаций. Ваш скрипт будет безопасен для запуска только на автономном экземпляре Redis и с тех пор поведение не указано,оно может нарушиться в будущих выпусках.