8.1.10 基本客户端连接与命令行操作
在运维实践中,最常用的客户端是 redis-cli。它支持交互式会话、批量执行命令、连接远端实例和脚本化调用。掌握基础连接参数、认证方式与常见操作流程,是后续性能调优与故障排查的基础。
0. 客户端与服务端基本架构草图#
1. 安装与环境准备(含 redis-cli)#
Debian/Ubuntu:
sudo apt update
sudo apt install -y redis-tools
redis-cli -v
# 预期输出: redis-cli 6.x/7.x
RHEL/CentOS:
sudo yum install -y redis
redis-cli -v
从源码编译(只需要 cli 时):
curl -O http://download.redis.io/redis-stable.tar.gz
tar -xf redis-stable.tar.gz && cd redis-stable
make redis-cli
./src/redis-cli -v
2. 连接方式与常用参数(含命令解释)#
- 本地默认连接(连接 127.0.0.1:6379):
redis-cli
# 进入交互式,提示符: 127.0.0.1:6379>
- 指定主机与端口(-h 指定主机,-p 指定端口):
redis-cli -h 192.168.1.10 -p 6379
- 指定密码(-a 指定认证,生产避免明文):
redis-cli -h 192.168.1.10 -p 6379 -a 'passw0rd'
- 指定数据库(-n 选择 DB,默认 0):
redis-cli -n 1
- 使用 TLS(--tls 开启加密,--cacert 指定 CA):
redis-cli --tls -h 192.168.1.10 -p 6379 --cacert /etc/redis/ca.crt
- 连接哨兵查询主节点(先连接哨兵,再取主地址):
redis-cli -p 26379
SENTINEL get-master-addr-by-name mymaster
# 预期输出: 1) "10.0.0.10" 2) "6379"
3. 交互式基础操作(可执行示例)#
redis-cli -h 127.0.0.1 -p 6379
在交互模式中执行:
PING
# 预期: PONG
INFO server
# 预期: 服务器版本、运行时长等
SELECT 2
# 预期: OK
DBSIZE
# 预期: (integer) 0 或键数量
4. 键管理与通用命令(含解释与安全替代)#
- 查询键(生产慎用 KEYS,建议 SCAN):
KEYS *
# 可能阻塞,键多时避免使用
SCAN 0 MATCH user:* COUNT 100
# 预期: 返回游标与键列表
- 查看键类型与过期:
TYPE user:1
TTL user:1
PTTL user:1
- 设置过期与删除:
EXPIRE user:1 300
PEXPIRE user:1 60000
DEL user:1
UNLINK user:1
5. 运维常用命令(含预期用途)#
INFO memory
# 内存使用概览
CLIENT LIST
# 当前连接列表
CLIENT KILL 192.168.1.20:55000
# 踢出指定客户端
BGSAVE
# 后台生成 RDB 快照
BGREWRITEAOF
# 重写 AOF 文件
SLOWLOG GET 10
# 查看慢日志
INFO replication
# 复制角色与状态
6. 批量与脚本化调用(完整示例)#
批量执行文件:
cat >/tmp/commands.txt <<'EOF'
SET user:1 alice
SET user:2 bob
MGET user:1 user:2
EOF
redis-cli -h 127.0.0.1 -p 6379 < /tmp/commands.txt
# 预期: OK OK 1) "alice" 2) "bob"
单条命令:
redis-cli -h 127.0.0.1 -p 6379 SET k v
# 预期: OK
管道模式提升写入效率:
for i in $(seq 1 5); do
echo "SET key:$i value:$i"
done | redis-cli --pipe
# 预期: All data transferred. Waiting for the last reply...
7. 安全实践与常见问题排查(含命令)#
安全建议:
- 避免明文密码,使用环境变量:
export REDISCLI_AUTH='passw0rd'
redis-cli -h 127.0.0.1 -p 6379
- 生产避免
KEYS *、FLUSHALL、FLUSHDB。
排错清单:
1) 连接被拒绝(Connection refused)
ss -lntp | grep 6379
# 未监听说明 Redis 未启动或端口变更
2) 认证失败(NOAUTH Authentication required)
redis-cli -h 127.0.0.1 -p 6379
AUTH passw0rd
# 预期: OK
3) 超时或网络不通
ping 192.168.1.10
telnet 192.168.1.10 6379
# 若不通,检查防火墙与安全组
4) 哨兵无法返回主节点
redis-cli -p 26379 SENTINEL masters
# 检查名称是否与配置一致
8. 练习与实战任务#
1) 使用 redis-cli 连接本地实例,执行 PING、INFO server、DBSIZE 并记录输出。
2) 编写批量命令文件创建 100 个键,使用 SCAN 分批查看。
3) 使用 CLIENT LIST 找出你的连接,随后用 CLIENT KILL 终止它并重新连接。
4) 触发 BGSAVE 后检查持久化状态(INFO persistence)。
5) 通过 REDISCLI_AUTH 环境变量完成认证连接,避免明文密码。