Отправить несколько команд во внешнюю программу
Мы пытаемся написать 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. Другими словами, мы должны иметь возможность выпускать несколько команд, подобных перечисленным выше.
Ответы
Ответ 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