使用bat文件获取和删除redis数据
Fetch and delete redis data using bat file
我创建了一个用于从 Redis 数据库中删除特定数据的 bat 文件。我有以下代码
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 命令输出中删除整个数据。
第一个循环set
的变量var
的每个运行都有一个新值,因此循环的每次迭代都会将新值重新分配给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
我创建了一个用于从 Redis 数据库中删除特定数据的 bat 文件。我有以下代码
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 命令输出中删除整个数据。
第一个循环set
的变量var
的每个运行都有一个新值,因此循环的每次迭代都会将新值重新分配给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