redis-cli 详解:Redis 命令行客户端全面指南
redis-cli 是 Redis 自带的命令行客户端工具,是开发、调试、运维 Redis 服务最常用、最直接的工具。它不仅支持交互式操作,还支持脚本化、批量执行、监控诊断等多种高级功能。
本文将系统性地介绍 redis-cli 的 安装、连接、基本用法、高级技巧、运维命令 和 最佳实践,帮助你全面掌握这个强大工具。
一、redis-cli 简介
- 全称:Redis Command Line Interface
- 作用:连接 Redis 服务器并发送命令
- 特点:
- 轻量、快速、跨平台(Linux/macOS/Windows)
- 支持文本和原始输出模式
- 内置性能测试、监控、集群管理等功能
- 默认端口:6379
- 默认数据库:0(共 16 个,0-15)
二、基本使用
1. 启动 redis-cli(默认连接本地)
redis-cli
进入交互模式后可直接输入 Redis 命令:
127.0.0.1:6379> SET name "Alice"
OK
127.0.0.1:6379> GET name
"Alice"
2. 连接远程 Redis 服务器
redis-cli -h 192.168.1.100 -p 6379 -a yourpassword
| 参数 | 说明 |
|---|---|
-h host | 指定 Redis 服务器 IP |
-p port | 指定端口(默认 6379) |
-a password | 指定密码(⚠️ 不安全,建议用 -u) |
-u "redis://user:pass@host:port/db" | 使用 URL 连接(推荐) |
✅ 安全推荐方式:
redis-cli -h 192.168.1.100 -p 6379
127.0.0.1:6379> AUTH yourpassword
3. 指定数据库
redis-cli -h 127.0.0.1 -p 6379 -n 1
或在连接后切换:
SELECT 1
4. 非交互式执行命令(脚本化)
redis-cli SET name "Bob"
redis-cli GET name
可用于 Shell 脚本中:
#!/bin/bash
NAME=$(redis-cli GET user:1001:name)
echo "User: $NAME"
三、输出格式控制
1. 原始输出(raw mode)
redis-cli --raw GET name
# 输出:Alice(无引号)
适合脚本解析。
2. CSV 输出
redis-cli --csv LRANGE mylist 0 2
# 输出:"a","b","c"
3. 大键分析模式
redis-cli --bigkeys
🔍 功能:扫描 Redis 实例,找出最大的 key(按内存占用),常用于性能优化。
📌 输出示例:
# Scanning the entire keyspace to find biggest keys as well as
# average sizes per key type.
Biggest string found 'user:session:abc' has 1.2MB
Biggest hash found 'user:profile:1001' has 500 fields
✅ 用途:发现大 key,避免阻塞主线程。
4. 统计模式(统计请求延迟)
redis-cli --stat
📌 实时显示:
- 每秒操作数(ops/sec)
- 已连接客户端数
- 内存使用
- key 数量变化
📌 示例输出:
------- data ------ --------------------- load -------------------- - child -
keys mem clients blocked requests connections
100 2.10M 10 0 1000 (+0) | 10000
✅ 用途:实时监控 Redis 性能趋势。
四、高级功能详解
1. 性能测试:--latency 和 --intrinsic-latency
✅ 测试网络延迟
redis-cli --latency -h 192.168.1.100
持续输出 PING 命令的响应时间(毫秒),用于评估网络质量。
✅ 测试内部延迟(系统瓶颈)
redis-cli --intrinsic-latency 100
运行 100 秒,测试 Redis 自身处理能力(无网络影响),用于判断 CPU、调度是否成为瓶颈。
2. 批量导入数据:--pipe 模式
适用于 大规模数据导入(比逐条 SET 快 10 倍以上)。
示例:导入 100 万个 key
# 生成命令流
for i in {1..1000000}; do
echo "SET key:$i value-$i"
done | redis-cli --pipe
📌 原理:使用 Redis 的 管道(pipeline)协议 批量传输,减少网络往返。
3. 监听所有命令:--raw + MONITOR
redis-cli MONITOR
实时输出服务器接收到的所有命令,格式如下:
1678901234.123456 [0 192.168.1.100:54321] "SET" "name" "Alice"
1678901235.234567 [0 192.168.1.100:54321] "GET" "name"
✅ 用途:
- 调试客户端行为
- 分析异常请求
⚠️ 注意:MONITOR 会影响性能,生产环境慎用。
4. 集群管理命令
查看集群信息
redis-cli -c -h 127.0.0.1 CLUSTER NODES
redis-cli -c -h 127.0.0.1 CLUSTER INFO
进入集群模式(自动重定向)
redis-cli -c -h 127.0.0.1 -p 7000
使用 -c 参数支持 Cluster 模式自动跳转(MOVED/ASK 重定向)。
5. 执行 Lua 脚本
redis-cli EVAL "return redis.call('GET', KEYS[1])" 1 mykey
参数说明:
"script":Lua 脚本1:KEYS 数量mykey:KEYS[1]
也可从文件加载:
redis-cli EVAL "$(cat script.lua)" 1 mykey
五、实用运维命令(通过 redis-cli 执行)
| 命令 | 用途 |
|---|---|
INFO | 查看服务器状态(内存、连接、持久化等) |
INFO memory | 查看内存使用详情 |
INFO replication | 查看主从复制状态 |
INFO cluster | 查看集群信息 |
CLIENT LIST | 查看所有客户端连接 |
CLIENT KILL ip:port | 强制断开某个客户端 |
SLOWLOG GET 10 | 查看最慢的 10 条命令 |
DBSIZE | 查看当前库 key 数量 |
KEYS pattern | 慎用!扫描 key(建议用 SCAN) |
FLUSHDB / FLUSHALL | 清空数据库(生产慎用) |
BGSAVE | 手动触发后台 RDB 持久化 |
CONFIG GET maxmemory | 查看配置 |
CONFIG SET loglevel verbose | 动态修改配置 |
六、redis-cli 配置技巧
1. 设置默认连接参数(~/.redisclirc)
创建文件 ~/.redisclirc:
set prompt "MyRedis> "
set width 80
支持配置:
prompt:自定义提示符width:输出宽度csv/raw:默认输出格式
2. 使用别名简化常用命令
在 Shell 中定义别名:
alias redis-prod='redis-cli -h redis.prod.com -p 6379 -a "$REDIS_PASS"'
alias redis-local='redis-cli -h 127.0.0.1'
七、常见问题与解决
| 问题 | 原因 | 解决方案 |
|---|---|---|
Could not connect to Redis | 网络不通、服务未启动 | 检查防火墙、Redis 是否运行 |
(error) NOAUTH | 密码错误 | 使用 AUTH password 或 -a |
(error) MOVED | 访问了错误的集群节点 | 使用 -c 启用集群模式 |
| 命令执行慢 | 大 key、阻塞命令 | 使用 SLOWLOG 分析 |
OOM command not allowed | 内存不足 | 检查 maxmemory 策略 |
八、最佳实践建议
✅ 安全方面:
- 避免在命令行中使用
-a password(可能被ps查看) - 使用
AUTH命令交互式输入密码 - 生产环境关闭
FLUSHALL:在redis.conf中rename-command FLUSHALL ""
✅ 性能方面:
- 大数据导入用
--pipe - 避免
KEYS *,改用SCAN - 监控大 key:定期运行
--bigkeys
✅ 运维方面:
- 使用
--stat监控性能趋势 - 使用
--latency检测网络延迟 - 定期检查
INFO和SLOWLOG
九、总结:redis-cli 核心能力图谱
| 能力 | 命令/参数 |
|---|---|
| 🔹 基础连接 | redis-cli -h -p -a -n |
| 🔹 脚本执行 | 直接传命令或管道 |
| 🔹 输出控制 | --raw, --csv |
| 🔹 性能诊断 | --latency, --intrinsic-latency, --stat |
| 🔹 大 key 分析 | --bigkeys |
| 🔹 批量导入 | --pipe |
| 🔹 实时监控 | MONITOR |
| 🔹 集群支持 | -c, CLUSTER NODES/INFO |
| 🔹 Lua 脚本 | EVAL |
| 🔹 运维管理 | INFO, SLOWLOG, CLIENT, CONFIG |
✅ 结语:
redis-cli 不只是一个“命令行工具”,更是 Redis 开发与运维的瑞士军刀。熟练掌握其各种模式和技巧,能极大提升工作效率,快速定位问题,保障系统稳定。
📚 官方文档:https://redis.io/docs/manual/cli/
🛠 推荐组合:redis-cli+INFO+SLOWLOG+--bigkeys= 完整的 Redis 健康检查套件。
1305

被折叠的 条评论
为什么被折叠?



