Подтвердить что ты не робот

Отправить несколько команд во внешнюю программу

Мы пытаемся написать PowerShell script, который вызывает внешнее приложение - клиент Redis (redis-cli.exe) - и затем отправляет несколько команд этому .exe. У нас нет проблем с отправкой отдельных команд, как показано ниже:

& redis-cli -h localhost -p 6379 SMEMBERS someKey

Проблема заключается в том, что это запустит клиент Redis, выдаст одну команду, закроет клиент и вернет управление PowerShell. Нам нужно выдать несколько команд в транзакции. Например, вот команды, которые мы хотим отправить клиенту:

MULTI
DEL someKey
DEL someSet
EXEC

Клиент Redis поддерживает отправку строки LUA script в качестве команды, но это, к сожалению, не поддерживает транзакционные команды MULTI/EXEC. Другими словами, мы должны иметь возможность выпускать несколько команд, подобных перечисленным выше.

4b9b3361

Ответ 1

Так как redis-cli появляется, чтобы читать ввод от STDIN, вы можете передать ему массив с такими командами:

'MULTI', 'EXEC' | & redis-cli -h localhost -p 6379

Использование echo (псевдоним для Write-Output) не требуется для подачи массива в конвейер.

Вы также можете сохранить массив команд в переменной:

$cmds = 'MULTI', 'EXEC'
$cmds | & redis-cli -h localhost -p 6379