Redis命令行查询是Redis管理和操作数据的核心方式,通过交互式终端或脚本执行命令,可直接实现数据的读写、配置管理、性能监控等功能,Redis命令行工具(redis-cli)是官方提供的客户端程序,支持连接本地或远程Redis服务器,执行命令后返回结构化结果,适用于开发调试、日常运维及数据分析等场景。

Redis命令行基础操作
连接Redis服务器
使用redis-cli
命令默认连接本地Redis(端口6379),若需连接远程服务器或指定端口,可通过参数配置:
redis-cli -h host -p port -a password
redis-cli -h 192.168.1.100 -p 6379 -a yourpassword
,其中-a
用于密码认证(若Redis启用ACL,需使用-u username
指定用户名)。
常用查询命令
Redis命令按功能分为键值操作、数据结构操作、服务器管理等类别,以下是常用查询命令及示例:
命令分类 | 命令示例 | 功能说明 | 返回结果示例 |
---|---|---|---|
键值操作 | KEYS pattern | 查找匹配模式的键(生产环境慎用) | 1) "key1" 2) "key2" |
EXISTS key | 检查键是否存在 | (integer) 1 | |
TTL key | 查看键的剩余生存时间(秒) | (integer) 3600 | |
字符串操作 | GET key | 获取字符串键的值 | "hello" |
STRLEN key | 获取字符串值的长度 | (integer) 5 | |
列表操作 | LRANGE key 0 -1 | 获取列表所有元素 | 1) "a" 2) "b" 3) "c" |
LLEN key | 获取列表长度 | (integer) 3 | |
哈希操作 | HGETALL key | 获取哈希表所有字段和值 | 1) "field1" 2) "value1" |
HKEYS key | 获取哈希表所有字段 | 1) "field1" 2) "field2" | |
集合操作 | SMEMBERS key | 获取集合所有成员 | 1) "member1" 2) "member2" |
SCARD key | 获取集合成员数量 | (integer) 2 | |
有序集合操作 | ZRANGE key 0 -1 | 按分数范围获取有序集合成员(升序) | 1) "member1" 2) "member2" |
ZCARD key | 获取有序集合成员数量 | (integer) 2 | |
服务器信息 | INFO [section] | 获取Redis服务器信息(如memory、stats) | 返回多行文本信息 |
CLIENT LIST | 查看已连接客户端信息 | 返回客户端ID、地址等详情 |
高级查询技巧
- 管道(Pipeline):通过
redis-cli --pipe
批量执行命令,减少网络开销,提升查询效率。cat commands.txt | redis-cli --pipe
,其中commands.txt
包含多行Redis命令。 - 慢查询日志:使用
SLOWLOG GET [num]
查看执行时间超过阈值的命令,帮助定位性能问题。 - SCAN命令:替代
KEYS
命令避免阻塞,通过游标分批遍历键,例如SCAN 0 MATCH user:* COUNT 100
。
命令行查询注意事项
- 生产环境慎用
KEYS
:KEYS
命令会阻塞服务器,在数据量大时可能导致服务不可用,推荐使用SCAN
或通过业务逻辑缩小查询范围。 - 数据类型匹配:查询时需确保键的数据类型与命令匹配,例如对字符串类型的键执行
HGETALL
会返回错误。 - 权限控制:若Redis启用ACL(访问控制列表),需确保命令执行用户具备相应权限,否则会返回
NOPERM
错误。 - 连接超时:远程查询时,若网络延迟高,可通过
--timeout
参数调整超时时间,如redis-cli --timeout 5000
。
相关问答FAQs
Q1: 如何批量导出Redis中的所有键值?
A1: 可通过管道结合KEYS
和GET
命令(仅适用于小数据量),redis-cli --scan --pattern "*" | xargs -I {} redis-cli GET {} > export.txt
,大数据量场景建议使用redis-cli --rdb dump.rdb
生成RDB文件,或使用redis-cli --pipe
配合DUMP
/RESTORE
命令逐个导出。

Q2: 命令行查询时出现“Connection refused”错误如何解决?
A2: 该错误通常由Redis服务未启动、端口错误或防火墙拦截导致,可按以下步骤排查:
- 检查Redis进程是否运行:
ps aux | grep redis
; - 确认端口配置是否正确:
redis-cli -h <host> -p <port> ping
,若返回PONG
则连接正常; - 检查防火墙规则,开放Redis端口(如6379);
- 若远程连接,确认Redis配置文件
bind
项是否包含客户端IP,或设置为0.0.0
允许所有IP访问(需注意安全风险)。
