REDIS:使用bash shell + redis-cli删除许多图案匹配的键
#redis #开发人员 #nosql #bash

您是否曾经需要在Redis服务器中删除许多键?如果您想这样做,并且不想编写代码(Python,C#,Java等),则可以使用本文中描述的脚本。

你需要什么?

  • bash shell
  • 启用了身份验证的REDIS。
  • redis-cli

我认为您对RedisRedis CLI bash脚本

我制作脚本的原因

有时您需要删除一组与Redis服务器中特定模式匹配的键(例如“ mypattern*”,“*mypattern*”,“ users*”等。为了实现此目标,您可以使用某种语言(Python,C#,Java等)开发解决方案,或者您可以使用 redis cli 。脚本使用第二个策略。

脚本如何工作

脚本使用 redis cli ,运行两个命令:

  • KEYS,要获得所有键与输入模式匹配
  • DEL,要删除键(一次)。

使用命令 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部署)。该脚本可能是做一些不同的事情的起点,也可以改进将变量作为参数等管理等。我希望这个脚本对某人有帮助。欢迎建议和更正。