您是否曾经需要在Redis服务器中删除许多键?如果您想这样做,并且不想编写代码(Python,C#,Java等),则可以使用本文中描述的脚本。
你需要什么?
- bash shell
- 启用了身份验证的REDIS。
- redis-cli
我制作脚本的原因
有时您需要删除一组与Redis服务器中特定模式匹配的键(例如“ mypattern*”,“*mypattern*”,“ users*”等。为了实现此目标,您可以使用某种语言(Python,C#,Java等)开发解决方案,或者您可以使用 redis cli 。脚本使用第二个策略。
脚本如何工作
脚本使用 redis cli ,运行两个命令:
使用命令 redis cli键匹配所有键之前的脚本,然后运行命令 redis cli del 将其删除。该脚本将每个键输送到 redis cli del 命令,请使用xargs,因此可以从redis中删除每个键。
剧本
脚本具有您必须设置的三个变量。前两个是关于您的安装(主机和端口),第三个代表您需要删除的键的模式。
#!/bin/bash
#######################################################################################################
# Set your parameters
#######################################################################################################
port=6379
host="localhost"
pattern="mypattern*"
#######################################################################################################
echo -e "\nRedis @$host:$port"
echo -e "\nTrying to delete all keys with pattern: $pattern\n"
echo -e "\nEnter Redis Password : "
read -s password
keys_found=`redis-cli -p $port -h $host -a $password --raw --no-auth-warning KEYS $pattern | xargs | wc -w`
if [ "$keys_found" -eq "0" ]; then
echo -e "\nKeys not found using pattern $pattern\n"
exit 1
fi
echo ""
echo "Deleting all keys with pattern $pattern"
redis-cli -p $port -h $host -a $password --no-auth-warning KEYS $pattern | xargs redis-cli -p $port -h $host -a $password --raw --no-auth-warning DEL
运行脚本
设置了参数部分后,运行脚本!
脚本启动时,它将要求密码在Redis服务器上进行身份验证,提供密码并等待执行的结论。
you@yourworkstation$./redis-keys-delete.sh
Redis @localhost:6379
Trying to delete all keys with pattern: mypattern*
Enter Redis Password :
Deleting all keys with pattern mypattern*
2
结论
当您开发开发时,此简单的脚本可能很有用,并且需要从Redis服务器中删除一个或多个键(例如,在工作站上使用Docker部署)。该脚本可能是做一些不同的事情的起点,也可以改进将变量作为参数等管理等。我希望这个脚本对某人有帮助。欢迎建议和更正。