【问题标题】:Send Multiple Commands to External Program向外部程序发送多个命令
【发布时间】:2015-09-04 01:53:18
【问题描述】:

我们正在尝试编写一个调用外部应用程序的 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 事务命令。换句话说,我们需要能够像上面列出的那样发出多个命令。

【问题讨论】:

  • 我不了解 PowerShell,但在我的 (Linux) 机器上,redis-cli 在标准输入上接受多个命令:echo -e "MULTI\nEXEC" | redis-cli 显示 OK
  • 在 PowerShell 管道中,字符串数组也应该这样做:'MULTI', 'DEL someKey', ... | redis-cli ...,前提是从 STDIN 读取的 Windows 版本。
  • 太棒了,它似乎有效! :) 如果您想将此作为答案发布,我会投票并接受。例如。 :回声“多”,“执行”| & redis-cli -h localhost -p 6379

标签: powershell scripting redis


【解决方案1】:

由于redis-cli 似乎从 STDIN 读取输入,您可以使用如下命令字符串为其提供一个数组:

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

将数组输入管道不需要使用echoWrite-Output 的别名)。

您也可以先将命令数组存储在变量中:

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

【讨论】:

    猜你喜欢
    • 2011-01-09
    • 2012-12-10
    • 2010-11-14
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多