我们正在尝试编写一个调用外部应用程序的PowerShell脚本 - 一个Redis客户端(redis-cli.exe
) - 然后向该.exe发送多个命令。发送如下所示的单个命令没有问题:
& redis-cli -h localhost -p 6379 SMEMBERS someKey
问题是,这将启动Redis客户端,发出单个命令,关闭客户端,然后将控制权返回给PowerShell。我们需要在事务中发出多个命令。例如,以下是我们要发送给客户端的命令:
MULTI
DEL someKey
DEL someSet
EXEC
Redis客户端支持将LUA脚本字符串作为命令发送,但遗憾的是,这不支持MULTI / EXEC事务命令。换句话说,我们需要能够发出如上所列的多个命令。
答案 0 :(得分:7)
由于redis-cli
似乎从STDIN读取输入,您可以使用如下命令字符串为其提供数组:
'MULTI', 'EXEC' | & redis-cli -h localhost -p 6379
使用echo
(Write-Output
的别名)不需要将数组送入管道。
您还可以先将命令数组存储在变量中:
$cmds = 'MULTI', 'EXEC'
$cmds | & redis-cli -h localhost -p 6379