redis-cli 详解:Redis 命令行客户端全面指南_redis cli
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\"OK127.0.0.1:6379> GET name\"Alice\"
2. 连接远程 Redis 服务器
redis-cli -h 192.168.1.100 -p 6379 -a yourpassword
-h host
-p port
-a password
-u
)-u \"redis://user:pass@host:port/db\"
✅ 安全推荐方式:
redis-cli -h 192.168.1.100 -p 6379127.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/bashNAME=$(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.2MBBiggest hash found \'user:profile:1001\' has 500 fields
✅ 用途:发现大 key,避免阻塞主线程。
4. 统计模式(统计请求延迟)
redis-cli --stat
📌 实时显示:
- 每秒操作数(ops/sec)
- 已连接客户端数
- 内存使用
- key 数量变化
📌 示例输出:
------- data ------ --------------------- load -------------------- - child -keys mem clients blocked requests connections100 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 NODESredis-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
DBSIZE
KEYS pattern
SCAN
)FLUSHDB
/ FLUSHALL
BGSAVE
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
(error) NOAUTH
AUTH password
或 -a
(error) MOVED
-c
启用集群模式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
--bigkeys
--pipe
MONITOR
-c
, CLUSTER NODES/INFO
EVAL
INFO
, SLOWLOG
, CLIENT
, CONFIG
✅ 结语:
redis-cli
不只是一个“命令行工具”,更是 Redis 开发与运维的瑞士军刀。熟练掌握其各种模式和技巧,能极大提升工作效率,快速定位问题,保障系统稳定。
📚 官方文档:https://redis.io/docs/manual/cli/
🛠 推荐组合:redis-cli
+INFO
+SLOWLOG
+--bigkeys
= 完整的 Redis 健康检查套件。