windows - 使用bat文件获取和删除redis数据

标签 windows batch-file redis redis-cli

我创建了一个bat文件,用于从Redis DB中删除特定数据。我有以下代码

title:Redis Service
@echo off
cls
ECHO "Redis cache clearing started"
ECHO "fetching started method 1"
redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"
ECHO "fetching started method 2"
FOR /F "tokens=* USEBACKQ" %%F IN (`redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"`) DO (
SET var=%%F
)
ECHO "fetching completed"
ECHO %var%
ECHO "deletion started"
FOR /F "tokens=* USEBACKQ" %%F IN (`redis-cli -h 192.134.56.67 -p 6379 -a MyPassword del %var%`) DO (
SET var2=%%F
)
ECHO %var2%
ECHO "deletion completed"
pause

我得到这样的输出

"Redis cache clearing started"
"fetching started method 2"
 1) "My.Key.2554"
 2) "My.Key.280017"
 3) "My.Key.224"
 4) "My.Key.23730"
 5) "My.Key.2072545"

"fetching completed"
"fetching started method 2"
My.Key.2072545
"deletion started"
1
"deletion completed"

我需要从 Redis 命令输出中删除整个数据。

最佳答案

每次运行第一个循环都会设置的变量var为新值,因此循环的每次迭代都会将新值重新分配给变量。因此,当您退出该循环时,var 只有一个值,在本例中为 My.Key.20725545 相反,请使用一个循环,不要像您那样分配变量那么就需要delayedexpansion。所以你需要这样的东西。 注意!!我没有redis,所以我无法测试这个结果,它只是一个示例:

@echo off & cls
title :Redis Service
echo "Redis cache clearing started"
for /F "tokens=*" %%f IN ('redis-cli -h 192.134.56.67 -p 6379 -a MyPassword keys "My.Key.*"') do (
 echo "%%~f"
 redis-cli -h 192.134.56.67 -p 6379 -a MyPassword del "%%~f"
)
echo deletion completed

关于windows - 使用bat文件获取和删除redis数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58813393/

相关文章:

c++ - Cloud Files API 支持哪些 Windows 版本?

c++ - 在代码中 - 删除包含文件的文件夹

c++ - 如何注册 Windows 类并使用已注册的类查找窗口

Windows .bat 文件,%~$PATH :1 quotes issue

java - 使用 Windows 批处理文件启动 Java 程序

php - 使用 MySQL 和 Redis 处理大数据

redis - 如何将 `keys_and_args` 传递给 redis-py' `eval` 函数,并传递给 lua 脚本

c++ - 我应该使用什么在 Windows 上编译 C++?

batch-file - 批处理文件 - 不带双引号的回显语句

redis - 我如何知道正在运行的 redis 实例的当前配置