在单个PowerShell上下文执行多Redis-cli命令失败,寻求解决方案
解决Redis-cli脚本执行命令的问题
原因说明
脚本里按顺序执行命令时,.\redis-cli.exe会启动一个独立的交互式进程,PowerShell会等这个进程退出后才执行后续的keys *和flushall,这两个命令实际是在PowerShell环境里运行,自然会报错。而手动逐条执行时,你是在Redis-cli的交互界面输入命令,由Redis-cli进程处理,所以能正常运行。
解决方案
方法1:直接通过Redis-cli参数传递命令
Redis-cli支持把命令作为参数直接传入,不用进入交互模式。修改脚本如下:
cd 'C:\Redis-x64-3.0.504' # 执行keys *命令 .\redis-cli.exe -p 6380 -a "xxxxxxxxxxxx" keys * # 执行flushall命令 .\redis-cli.exe -p 6380 -a "xxxxxxxxxxxx" flushall
方法2:通过输入重定向批量执行命令
- 创建一个文本文件(比如
redis_commands.txt),写入要执行的Redis命令:
keys * flushall
- 在脚本里通过输入重定向让Redis-cli读取并执行文件里的命令:
cd 'C:\Redis-x64-3.0.504' .\redis-cli.exe -p 6380 -a "xxxxxxxxxxxx" < redis_commands.txt
方法3:使用PowerShell Here-String传递命令
不用额外创建文件,直接在脚本里用Here-String把命令传给Redis-cli:
cd 'C:\Redis-x64-3.0.504' @" keys * flushall "@ | .\redis-cli.exe -p 6380 -a "xxxxxxxxxxxx"
内容的提问来源于stack exchange,提问作者Anand
相关产品推荐
相关产品推荐

