如何删除键?

103

我想在Redis命令行中删除与“user *”匹配的键。

我该如何做?


1
在 Redis 中,你不会删除键,而是键自己删除。 - max taldykin
11个回答

103

我用的另一个简洁的一行代码来实现你想要的功能是:

redis-cli KEYS "user*" | xargs redis-cli DEL

1
太好了,谢谢。遗憾的是 Redis 没有本地支持这个功能。 - snapfractalpop
10
如果你有多个数据库(keyspaces),那么这是一个技巧:假设你需要删除db3中的键:“redis-cli -n 3 KEYS“ prefix:* ”| xargs redis-cli -n 3 DEL”。 - Christoffer
在执行删除命令之前,是否有一行代码可以提供身份验证(即登录)? - thames
"redis-cli help" 说:-a <password> 连接服务器时使用的密码。希望能帮到你。 - user1151446
我在这个问题上遇到了困难。如果你需要删除许多条目,最好使用下面基于awk的方法。 - Rafael

61

目前还没有一次性实现此功能的功能(请参见DEL文档中的注释)。不幸的是,您只能使用KEYS命令获取结果集,然后遍历结果并使用DEL删除每个键。

使用一些Bash命令来帮助怎么样?

for key in `echo 'KEYS user*' | redis-cli | awk '{print $1}'`
 do echo DEL $key
done | redis-cli
为了执行此操作,请按以下步骤进行:
  1. 运行命令echo 'KEYS user*' | redis-cli | awk '{print $1}',使用awk删除不需要的额外文本,获取所有键。
  2. 为每个键创建一个echo语句来删除它,例如:echo DEL $key
  3. 将DEL语句传回cli以执行,例如:| redis-cli
并不建议此方法(如果一些用户名中有空格,则可能会遇到问题,但希望您能理解)。

22

现在有一个删除键的命令,即DEL key [keys]。

DEL key...


6
使用 awk,从 Redis 中查找所有匹配的键,使用 redis-cli KEYS 命令并将结果传输到 redis-cli DEL 命令。
redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'

6

回应orangeoctopus的答案,你不需要使用echo和管道,你可以将命令作为参数传递到redis-cli中。这意味着你可以这样做:

for key in `redis-cli "KEYS" "user*" | awk '{print $1}'`
 do redis-cli "DEL" "$key"
done

2
如果一个模式中有多个键,例如:user1、user2、user3。 要删除所有符合模式的键,请使用以下语法。
redis-cli -c --scan --pattern '*user*' | xargs -l -r redis-cli -c del

使用此命令,它将扫描并查找与上述模式匹配的所有键,并将其传递给xargs,xargs会逐个删除这些键。
请注意,使用-l参数逐个删除键,并使用-r仅在删除命令有任何输入时执行删除命令。

2
为了删除db 3的所有redis键:
redis-cli -n 3 --scan | xargs redis-cli -n 3 DEL

1
使用此命令可以删除具有反斜杠、引号、双引号或空格的redis键:
redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL

0

我知道这已经过时了,但对于从谷歌进入此页面的人来说:

我刚刚发布了一个命令行界面实用程序到npm和github上,它允许您从Redis数据库中删除与给定模式(甚至是或者像您问用户)匹配的键。

您可以在这里找到这个实用程序:

https://www.npmjs.com/package/redis-utils-cli


0

使用单行命令时,您可以编辑模式以避免特定字符的转义。例如,要删除类似于'\b test \b'的模式,请使用:

redis-cli --raw KEYS '\\b*' | sed 's/\\b/\\\\b/g' | xargs redis-cli del

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接