You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过redis-cli命令行认证?带密码批量删密钥方法

我来帮你搞定这两个Redis命令行的问题,都是日常使用中很常见的场景:

1. 如何通过redis-cli从命令行进行身份认证?

有两种常用的方式,看你哪种更顺手:

  • 交互式认证:先正常启动redis-cli进入交互模式,然后输入认证命令:

    AUTH your_redis_password
    

    验证成功后会返回OK,之后就能执行其他Redis命令了。

  • 启动时直接带密码:如果不想进入交互模式再输入密码,可以在启动redis-cli的时候直接指定密码参数:

    # 短参数形式
    redis-cli -a your_redis_password
    # 长参数形式,更清晰
    redis-cli --auth your_redis_password
    

    要是你的密码里包含特殊字符(比如空格、@&这类),记得给密码加上引号,避免被shell解析出错:

    redis-cli -a "your@pass&word_with_spaces"
    
2. 带密码时如何删除匹配abc*的所有密钥?

没错,Redis加了密码之后,原来的命令因为没有携带认证信息,所以每个redis-cli调用都会报错认证失败,必须在命令里加入密码参数才行。有两种修改方式:

方式一:给每个redis-cli调用都加上密码参数

直接修改原来的命令,在两个redis-cli后面都加上-a(或--auth)参数:

redis-cli -a your_redis_password --raw keys "abc*" | xargs redis-cli -a your_redis_password del

同样,密码有特殊字符的话记得加引号。

方式二:更安全的写法(避免命令行暴露密码)

上面的写法会把密码明文显示在命令行历史和ps进程列表里,不太安全。你可以改用环境变量传递密码,这样密码不会出现在命令行里:

# 先通过环境变量设置密码
export REDISCLI_AUTH=your_redis_password
# 再执行删除命令
redis-cli --raw keys "abc*" | xargs redis-cli del

⚠️ 额外提醒:keys命令在Redis生产环境要谨慎使用,因为它会遍历所有键,阻塞Redis服务一段时间。如果你的Redis里键很多,建议改用scan命令来分批获取匹配的键,再删除,比如可以写个简单的shell脚本:

#!/bin/bash
export REDISCLI_AUTH=your_redis_password
redis-cli --raw scan 0 MATCH "abc*" COUNT 100 | while read -r key; do
  if [[ -n "$key" ]]; then
    redis-cli del "$key"
  fi
done

这个脚本会分批扫描并删除,不会长时间阻塞Redis。

内容的提问来源于stack exchange,提问作者Bravo

火山引擎 最新活动