Redis-CLI 登录详细说明
目录
什么是 redis-cli
redis-cli (Redis Command Line Interface) 是 Redis 官方提供的一个命令行工具,用于与 Redis 服务器进行交互。它是 Redis 生态中最常用、最基础的客户端,可以用来执行 Redis 支持的所有命令,如数据的增删改查、服务器状态检查、配置修改等。
基本登录命令
redis-cli 的核心功能是建立与 Redis 服务器的连接。其最基本的命令格式如下:
redis-cli [OPTIONS]
当不带任何参数运行时,redis-cli 会尝试以默认配置连接 Redis 服务器。
常见连接场景详解
场景 1: 连接本地默认 Redis 服务
如果你的 Redis 服务运行在本地(127.0.0.1),并且使用默认端口(6379),那么直接运行 redis-cli 即可。
命令:
redis-cli
成功登录后,你会看到类似下面的提示符:
127.0.0.1:6379>
这个提示符表示你已经成功连接到 IP 为 127.0.0.1、端口为 6379 的 Redis 服务器。现在你可以输入任何 Redis 命令并执行,例如 PING。
127.0.0.1:6379> PING
PONG
收到 PONG 响应说明连接正常。
场景 2: 连接指定主机和端口的 Redis 服务
在大多数生产或开发环境中,Redis 服务可能运行在另一台机器上,或者使用非默认端口。这时需要使用 -h (host) 和 -p (port) 参数来指定。
命令格式:
redis-cli -h <redis-host-ip> -p <redis-port>
示例:
假设 Redis 服务器 IP 地址为 192.168.1.100,端口为 6380。
redis-cli -h 192.168.1.100 -p 6380
成功后提示符变为:
192.168.1.100:6380>
场景 3: 连接需要密码认证的 Redis 服务
为了安全,Redis 通常会设置密码。当连接到有密码保护的 Redis 服务时,有两种方式可以提供密码。
方式 A: 登录后认证(推荐)
- 先按照场景 1 或 2 的方式连接到 Redis 服务器。
redis-cli -h 192.168.1.100 -p 6380 - 连接成功后,使用
AUTH命令进行认证。
如果密码正确,服务器会返回192.168.1.100:6380> AUTH your_redis_password OKOK。之后你就可以执行所有授权范围内的命令了。
方式 B: 登录时直接提供密码(不推荐在生产环境命令行使用)
可以使用 -a (auth) 参数在连接命令中直接提供密码。
redis-cli -h 192.168.1.100 -p 6380 -a your_redis_password
注意: 这种方式的缺点是密码会明文显示在你的命令历史记录(history)中,存在安全风险。
场景 4: 连接 Redis 集群 (Cluster)
连接 Redis 集群时,redis-cli 需要一些特殊的处理来自动发现集群中的其他节点。关键参数是 -c (cluster)。
命令格式:
redis-cli -c -h <any-cluster-node-ip> -p <any-cluster-node-port>
你只需要提供集群中任意一个可用节点的 IP 和端口即可。
示例:
redis-cli -c -h 192.168.1.101 -p 6379
成功连接后,当你操作的数据不在当前连接的节点上时,redis-cli 会自动重定向(MOVED)到正确的节点,并执行命令。
192.168.1.101:6379> SET mykey "hello"
-> Redirected to slot [12539] located at 192.168.1.102:6379
OK
192.168.1.102:6379> GET mykey
"hello"
可以看到,提示符自动从 101 节点切换到了 102 节点。
场景 5: 通过 Unix 套接字 (Socket) 连接
在某些配置下,Redis 可能只监听 Unix 套接字文件,而不是 TCP/IP 端口。这种方式通常用于本地高性能通信。
命令格式:
redis-cli -s <socket-file-path>
示例:
redis-cli -s /var/run/redis/redis.sock
如果 Redis 同时设置了密码,同样需要在连接后使用 AUTH 命令。
常用可选参数
除了上述提到的 -h, -p, -a, -c, -s 之外,redis-cli 还有一些非常实用的参数:
--raw: 格式化输出,去掉多余的引号和换行符,便于脚本处理。redis-cli --raw GET mykey--no-raw: 与--raw相反,强制使用带引号的默认格式。-n <db-number>: 连接后直接切换到指定的数据库(默认为 0 号库)。redis-cli -n 1-x: 从标准输入(stdin)读取最后一个参数。这在批量导入数据时非常有用。echo "hello world" | redis-cli -x SET mykey-r <count>: 重复执行指定的命令count次。redis-cli -r 5 PING-i <interval>: 每隔interval秒执行一次命令(单位为秒),配合-r使用。redis-cli -r 10 -i 1 INFO stats | grep keyspace_hits
退出登录
在 redis-cli 交互模式下,有多种方式可以退出:
- 输入
QUIT命令 (推荐)127.0.0.1:6379> QUIT - 输入
EXIT命令127.0.0.1:6379> EXIT - 使用快捷键
Ctrl + CCtrl + D
常见问题排查 (FAQ)
-
Could not connect to Redis at 127.0.0.1:6379: Connection refused- 原因: Redis 服务未启动,或者监听的 IP/端口不对。
- 解决方法:
- 检查 Redis 服务是否正在运行:
ps -ef | grep redis-server。 - 启动 Redis 服务:
redis-server /path/to/your/redis.conf。 - 检查
redis.conf配置文件中的bind和port选项。
- 检查 Redis 服务是否正在运行:
-
(error) NOAUTH Authentication required.- 原因: Redis 服务器开启了密码认证,而你尚未提供密码。
- 解决方法: 使用
AUTH <your_password>命令进行认证。
-
(error) WRONGPASS invalid password- 原因: 提供的密码不正确。
- 解决方法: 确认密码无误后重新尝试。如果忘记密码,需要修改
redis.conf中的requirepass配置项,然后重启 Redis 服务。
-
连接 Redis 集群时,
MOVED错误但没有自动重定向。- 原因: 连接集群时忘记添加
-c参数。 - 解决方法: 使用
redis-cli -c ...命令重新连接。
- 原因: 连接集群时忘记添加
-
远程连接时,服务器 IP 能
ping通,但redis-cli连接失败。- 原因: 可能是防火墙(如
iptables,firewalld)或云服务商的安全组规则阻止了6379端口的访问。也可能是 Redis 配置中的bind选项只绑定了127.0.0.1。 - 解决方法:
- 检查并配置防火墙,开放 Redis 端口。
- 修改
redis.conf中的bind选项为0.0.0.0(允许所有 IP 访问) 或你客户端的 IP 地址,然后重启 Redis。注意:将bind设置为0.0.0.0存在安全风险,强烈建议配合密码和防火墙使用。
- 原因: 可能是防火墙(如