【问题标题】:How do I remove keys?如何删除密钥?
【发布时间】:2012-02-06 14:47:09
【问题描述】:

我想删除匹配“user*”的键。

如何在 redis 命令行中执行此操作?

【问题讨论】:

  • 在 redis 中,您不会删除键,而是键会自行删除。

标签: database redis redis-commands


【解决方案1】:

我用来做你想做的另一个紧凑的单线是:

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

【讨论】:

  • 这太好了,谢谢。遗憾的是 Redis 原生没有这个功能。
  • 如果您有多个数据库(键空间),那么这就是诀窍:假设您需要删除 db3 中的键:redis-cli -n 3 KEYS "prefix:*" | xargs redis-cli -n 3 DEL
  • 如果您需要在执行删除命令之前提供 AUTH(即登录),是否有一条线?
  • 'redis-cli help' 说:-a 连接服务器时使用的密码。希望对您有所帮助。
  • 我遇到了这个问题。如果您有很多要删除的条目,最好使用下面基于 awk 的条目。
【解决方案2】:

这不是现在可以一次性完成的功能(请参阅DEL documentation 中的 cmets)。不幸的是,您只剩下使用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 DEL $key -- 对于每一个,创建一个 echo 语句来删除它。
  3. | redis-cli -- 获取 DEL 语句并将它们传递回 cli。

并不是说这是最好的方法(如果您的某些用户名中有空格,您可能会遇到一些问题,但希望您明白这一点)。

【讨论】:

    【解决方案3】:

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

    DEL key...

    【讨论】:

      【解决方案4】:

      使用awk,使用redis-cli KEYS 命令和管道到redis-cli DEL 命令从redis 中查找所有匹配的键。

      redis-cli KEYS "user*"  | awk '{ system("redis-cli DEL " $1) }'
      

      【讨论】:

        【解决方案5】:

        对于 orangeoctopus 的回答,您不需要 echo 和管道,您可以将命令作为参数传递给 redis-cli。这意味着你可以做到

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

        【讨论】:

          【解决方案6】:

          为了删除db 3的所有redis键:

          redis-cli -n 3 --scan | xargs redis-cli -n 3 DEL
          

          【讨论】:

            【解决方案7】:

            使用它来删除带有反斜杠、引号、双引号或空格的 redis 键:

            redis-cli KEYS "user*" | sed 's/\\/\\\\/g' | sed 's/"/\\"/g' | sed "s/'/\\\\'/g" | sed 's/ /\\ /g' | xargs redis-cli DEL

            【讨论】:

              【解决方案8】:

              我知道这已经过时了,但是对于那些从 Google 来到这里的人:

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

              您可以在此处找到该实用程序:

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

              【讨论】:

                【解决方案9】:

                使用 oneliner 时,您可以编辑模式以防它转义特定字符。例如,要删除像 '\b test \b' 这样的模式,请使用:

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

                【讨论】:

                  猜你喜欢
                  • 2013-02-19
                  • 2014-10-17
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-10-07
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多