Redis-cli 是什么?命令行客户端使用教程 – wiki基地


探索 Redis 的命令行艺术:深入理解与精通 redis-cli

引言:Redis 的世界与 redis-cli 的桥梁

在当今高速发展的数据存储领域,Redis (Remote Dictionary Server) 作为一款高性能的开源内存数据库,以其丰富的数据结构、卓越的性能和灵活性,成为了缓存、消息队列、实时分析、排行榜等众多应用场景的首选。然而,再强大的工具也需要一个高效的接口来与之交互。对于 Redis 而言,这个至关重要的接口就是其官方的命令行客户端——redis-cli

redis-cli 不仅仅是一个简单的命令行工具,它更是 Redis 管理员和开发者手中的一把瑞士军刀。无论是进行日常的操作、调试问题、监控性能、还是自动化管理任务,redis-cli 都扮演着不可或缺的角色。它提供了直观、强大且灵活的方式来与 Redis 服务器进行通信,执行各种 Redis 命令,并观察服务器的状态。

本文旨在为读者提供一份详尽的 redis-cli 使用指南。我们将从 redis-cli 的基本概念入手,逐步深入探讨其安装、连接、交互模式、非交互模式、高级功能(如管道、监控、集群管理)以及实用技巧和最佳实践。无论您是 Redis 的初学者,还是希望进一步提升 redis-cli 使用效率的资深用户,本文都将为您提供宝贵的知识和实用的操作步骤。

第一章:redis-cli 是什么?—— Redis 的官方命令行瑞士军刀

1.1 redis-cli 的定义与核心作用

redis-cli 是 Redis 官方提供的一个功能强大的命令行界面 (Command Line Interface) 工具,用于与 Redis 服务器进行交互。它是 Redis 源码包的一部分,当您安装 Redis 服务器时,redis-cli 通常也会一同被编译和安装。

它的核心作用可以概括为以下几点:

  • 执行 Redis 命令: 这是 redis-cli 最基本的功能,用户可以通过它直接向 Redis 服务器发送任何支持的命令,例如 SETGETLPUSHHGETALL 等,并接收服务器的响应。
  • 服务器管理与监控: redis-cli 提供了丰富的命令和功能来管理 Redis 服务器,包括查看服务器信息 (INFO)、监控实时命令 (MONITOR)、慢查询日志 (SLOWLOG)、配置管理 (CONFIG GET/SET) 等。
  • 调试与故障排查: 当 Redis 出现问题时,redis-cli 是进行初步诊断和故障排查的首选工具。通过观察命令执行情况、服务器状态,可以快速定位问题。
  • 自动化脚本: 除了交互式使用外,redis-cli 也可以用于非交互模式,方便地集成到 shell 脚本中,实现 Redis 相关的自动化任务。
  • 集群管理: 对于 Redis Cluster,redis-cli 提供了专门的子命令来创建、添加节点、检查和修复集群等,是管理 Redis 集群不可或缺的工具。

1.2 redis-cli 的主要特性一览

redis-cli 拥有一系列特性,使其成为一个高效且多功能的工具:

  • 交互式模式: 类似 Bash 或 Python 解释器,用户可以持续输入命令并立即看到结果,极大地提升了操作的便捷性。
  • 非交互式模式: 支持单次命令执行,适用于脚本和自动化任务。
  • 管道 (Pipelining) 支持: 能够一次性发送多个命令给服务器,然后等待所有命令的响应,显著减少网络往返时间 (RTT),提高批量操作的性能。
  • SSL/TLS 支持: 可以通过 TLS/SSL 安全地连接到 Redis 服务器,保护数据传输。
  • 客户端证书认证: 除了密码认证外,还支持客户端证书进行身份验证,增强安全性。
  • Redis Cluster 模式: 内置对 Redis 集群的支持,可以自动处理请求路由和故障转移。
  • 监控工具: MONITORINFOSLOWLOG 等命令提供了对 Redis 服务器状态的全面洞察。
  • 数据导入/导出辅助: 虽然不直接是导入导出工具,但可以通过管道配合其他工具实现数据批量操作。
  • 特殊模式:--latency (延迟分析)、--hotkeys (查找热点键)、--rdb (解析 RDB 文件) 等。

第二章:初识与连接 —— redis-cli 的安装与基本使用

2.1 redis-cli 的安装

redis-cli 通常与 Redis 服务器捆绑在一起。当您从源码编译安装 Redis 时,redis-cli 会在 src 目录下生成。如果您使用包管理器(如 APT、YUM、Homebrew)安装 Redis,那么 redis-cli 也通常会被安装到系统的 PATH 路径中,可以直接在终端中调用。

示例 (Linux/macOS):

  1. 从源码编译 Redis 后:
    bash
    cd redis-stable/src
    ./redis-cli
  2. 通过包管理器安装后 (以 Debian/Ubuntu 为例):
    bash
    sudo apt update
    sudo apt install redis-server # redis-cli 会随之安装
    redis-cli
  3. 通过 Homebrew (macOS):
    bash
    brew install redis
    redis-cli

2.2 连接 Redis 服务器 —— 基础与进阶参数

redis-cli 在连接服务器时提供了丰富的参数,以适应不同的网络环境和认证需求。

2.2.1 默认连接 (本地服务器,默认端口)

如果 Redis 服务器运行在本地 (127.0.0.1) 且使用默认端口 (6379),那么只需直接输入 redis-cli 即可进入交互模式:

bash
redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379> SET mykey "Hello Redis"
OK
127.0.0.1:6379> GET mykey
"Hello Redis"

在交互模式下,您可以连续输入 Redis 命令。要退出,可以输入 QUITexit,或按下 Ctrl+C

2.2.2 指定主机和端口

当 Redis 服务器不在本地或使用了非默认端口时,需要使用 -h (host) 和 -p (port) 参数:

bash
redis-cli -h 192.168.1.100 -p 6380

这将连接到 IP 地址为 192.168.1.100,端口为 6380 的 Redis 服务器。

2.2.3 密码认证

如果您的 Redis 服务器配置了密码 (通过 requirepass 指令),则需要使用 -a (authentication) 参数提供密码:

bash
redis-cli -a your_password

如果密码中包含空格或其他特殊字符,请用引号括起来。在生产环境中,直接在命令行中输入密码可能不安全,因为密码会留在命令行历史记录中。更安全的方式是:

“`bash
redis-cli

进入交互模式后,使用 AUTH 命令

127.0.0.1:6379> AUTH your_password
OK
或者,如果 `redis-cli` 版本支持,可以通过环境变量传入:bash
export REDISCLI_AUTH=”your_password”
redis-cli
``redis-cli会自动使用REDISCLI_AUTH` 环境变量中的密码进行认证。

2.2.4 选择数据库

Redis 支持多数据库,默认有 16 个 (0-15)。可以使用 -n 参数指定连接的数据库索引:

bash
redis-cli -n 1 # 连接到数据库 1
127.0.0.1:6379[1]> SET db1_key "value_in_db1"
OK
127.0.0.1:6379[1]> SELECT 0 # 也可以在交互模式下切换数据库
OK
127.0.0.1:6379> GET db1_key # 此时无法获取,因为它在数据库 1 中
(nil)

2.2.5 通过 Unix Domain Socket 连接

在某些场景下,为了更高的性能和安全性,Redis 服务器可能配置为通过 Unix Domain Socket 进行监听,而非 TCP 端口。此时,可以使用 -s (socket) 参数:

bash
redis-cli -s /var/run/redis/redis.sock

2.2.6 TLS/SSL 安全连接

为了在不可信网络中安全传输数据,Redis 6.0 及以上版本支持 TLS/SSL。redis-cli 可以通过 --tls 参数连接到支持 TLS 的 Redis 服务器:

bash
redis-cli --tls \
--cacert /path/to/ca.crt \
--cert /path/to/client.crt \
--key /path/to/client.key \
-h your_tls_redis_host -p 6379

* --tls: 启用 TLS/SSL 连接。
* --cacert: 指定 CA 证书路径,用于验证服务器证书。
* --cert: 指定客户端证书路径 (如果服务器要求客户端证书认证)。
* --key: 指定客户端私钥路径 (与客户端证书一起使用)。
* --insecure: 禁用服务器证书验证(不推荐在生产环境使用)。

第三章:交互模式 —— redis-cli 的日常操作界面

交互模式是 redis-cli 最常用的工作方式。一旦成功连接到 Redis 服务器,您就会进入一个类似于 shell 的环境,可以自由地输入 Redis 命令。

3.1 进入与退出交互模式

  • 进入: 运行 redis-cli 或带连接参数的 redis-cli 命令。
  • 退出:
    • 输入 QUIT 命令。
    • 输入 exit 命令。
    • 按下 Ctrl+C

3.2 命令执行与结果显示

在交互模式下,输入 Redis 命令,按下回车键,redis-cli 就会将命令发送给服务器,并将服务器的响应打印到终端。

bash
127.0.0.1:6379> SET name "Alice"
OK
127.0.0.1:6379> GET name
"Alice"
127.0.0.1:6379> RPUSH mylist item1 item2 item3
(integer) 3
127.0.0.1:6379> LRANGE mylist 0 -1
1) "item1"
2) "item2"
3) "item3"
127.0.0.1:6379> HSET user:100 id 100 name "Bob" age 30
(integer) 3
127.0.0.1:6379> HGETALL user:100
1) "id"
2) "100"
3) "name"
4) "Bob"
5) "age"
6) "30"

注意: redis-cli 会根据 Redis 的返回类型(字符串、整数、数组等)以可读的方式格式化输出。例如,OK 表示成功,(integer) 后跟整数值," 包裹的字符串,以及带索引的列表项。

3.3 自动补全与历史命令

redis-cli 提供了强大的自动补全功能,可以帮助您快速输入命令和参数:

  • 命令补全: 输入命令的前几个字母,然后按下 Tab 键,redis-cli 会自动补全命令,或者列出所有匹配的命令。
    bash
    127.0.0.1:6379> S<Tab> # 可能会补全为 SELECT, SET, SADD, SISMEMBER, ...
  • 参数补全: 对于某些命令,redis-cli 甚至可以补全参数,例如 CONFIG GET 命令,可以补全配置项。
    bash
    127.0.0.1:6379> CONFIG GET ma<Tab> # 可能会补全为 CONFIG GET maxclients, CONFIG GET maxmemory, ...
  • 历史命令: redis-cli 会保存您之前输入过的命令历史。可以使用 (上箭头) 和 (下箭头) 键来浏览历史命令。

3.4 辅助命令 (HELP)

如果您不确定某个 Redis 命令的用法,可以在 redis-cli 交互模式下使用 HELP 命令:

bash
127.0.0.1:6379> HELP SET
SET key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX] [GET]
summary: Set the string value of a key
since: 1.0.0
group: string
...

HELP 命令会显示该命令的语法、参数、版本信息、命令组以及简要说明,非常实用。

第四章:非交互模式 —— 脚本与自动化

除了交互模式,redis-cli 也非常适合在 shell 脚本中执行单个命令,实现自动化和批量操作。

4.1 执行单个命令

在命令行中直接附带要执行的 Redis 命令及其参数:

bash
redis-cli -h 127.0.0.1 -p 6379 GET mykey

这将直接输出 mykey 的值,而不会进入交互模式。

示例:
bash
redis-cli SET newkey "Hello Script"
OK
redis-cli GET newkey
"Hello Script"
redis-cli LPUSH mylist_script A B C
(integer) 3
redis-cli LRANGE mylist_script 0 -1
1) "C"
2) "B"
3) "A"

4.2 通过管道输入命令

redis-cli 可以从标准输入 (stdin) 读取命令,这使得通过管道 (pipe) 将命令列表传递给 redis-cli 成为可能。

示例: 从一个文件中读取命令并执行。

创建一个 commands.txt 文件:
SET key1 "value1"
INCR counter
LPUSH mylist item_script_1 item_script_2

然后执行:
bash
cat commands.txt | redis-cli

redis-cli 会逐行读取 commands.txt 中的命令并发送给 Redis 服务器。服务器的响应也会逐行打印到标准输出。

这对于批量初始化数据、执行一系列管理任务非常有用。

4.3 结合 Shell 脚本

非交互模式使得 redis-cli 能够轻松地集成到复杂的 shell 脚本中,实现对 Redis 的程序化控制。

示例: 监控 Redis 内存使用量并在超过阈值时发出警告。

“`bash

!/bin/bash

MAX_MEMORY_MB=100
CURRENT_MEMORY_KB=$(redis-cli INFO memory | grep used_memory: | cut -d: -f2 | tr -d ‘\r’)
CURRENT_MEMORY_MB=$((CURRENT_MEMORY_KB / 1024 / 1024))

echo “Current used memory: $CURRENT_MEMORY_MB MB”

if [ “$CURRENT_MEMORY_MB” -gt “$MAX_MEMORY_MB” ]; then
echo “WARNING: Redis memory usage (${CURRENT_MEMORY_MB}MB) exceeds threshold (${MAX_MEMORY_MB}MB)!”
# 这里可以添加发送邮件、短信等告警逻辑
fi
``
这个脚本利用
redis-cli INFO memory获取内存信息,并通过grepcut提取used_memory` 值,然后进行判断。

第五章:高级功能与强大工具 —— 成为 redis-cli 大师

redis-cli 远不止于简单的命令执行,它还提供了许多高级功能,能够帮助您深入了解、管理和优化 Redis。

5.1 管道模式 (Pipelining)

管道是 Redis 性能优化的重要手段之一,redis-cli 通过 --pipe 参数提供了对管道的直接支持。它允许客户端一次性向服务器发送多个命令,而不是每发送一个命令就等待一个响应,从而减少网络延迟带来的性能损耗。

工作原理:
1. 客户端将多个命令打包发送给服务器。
2. 服务器依次执行这些命令。
3. 服务器将所有命令的响应一次性打包返回给客户端。

使用场景: 批量写入、批量读取等对性能有要求的场景。

示例:
1. 创建一个包含大量命令的文件 (batch_commands.txt):
SET key:1 value:1
SET key:2 value:2
LPUSH mylist item_a
LPUSH mylist item_b
INCR counter

2. 使用 redis-cli --pipe 执行:
bash
cat batch_commands.txt | redis-cli --pipe

输出示例 (可能会显示发送和接收的字节数):
All data transferred. Waiting for the last reply...
Last reply received from server.
errors: 0, replies: 5

这表示所有命令都已成功发送并收到响应。

5.2 监控与调试工具

redis-cli 提供了一系列强大的监控和调试工具,帮助您了解 Redis 服务器的运行状况。

5.2.1 MONITOR:实时命令流

MONITOR 命令会实时打印 Redis 服务器接收到的所有命令。这对于调试应用程序与 Redis 交互、查看具体命令执行情况非常有用。

bash
redis-cli MONITOR

输出示例:
1678893456.123456 [0 127.0.0.1:54321] "SET" "mykey" "myvalue"
1678893456.789012 [0 127.0.0.1:54322] "GET" "anotherkey"

警告: MONITOR 会将所有命令及其参数发送到客户端,如果流量很大,可能会对服务器性能产生显著影响,并占用大量网络带宽。不建议在生产环境长时间运行。

5.2.2 INFO:服务器状态总览

INFO 命令提供了关于 Redis 服务器各个方面的详细信息,是了解服务器健康状况和性能的关键。

bash
redis-cli INFO

INFO 可以接受可选的 section 参数,以获取特定类别的信息:server, clients, memory, persistence, stats, replication, cpu, commandstats, cluster, keypace

bash
redis-cli INFO memory # 只查看内存相关信息
redis-cli INFO stats # 只查看统计信息

常见 INFO 字段解释:
* used_memory: Redis 使用的内存总量。
* connected_clients: 当前连接的客户端数量。
* ops_per_sec: 每秒执行的命令数。
* total_connections_received: 服务器启动以来接受的总连接数。
* master_link_status: 主从复制连接状态。
* rdb_last_save_time: 上次 RDB 持久化保存的时间戳。
* aof_current_size: AOF 文件当前大小。

通过解析 INFO 的输出,可以编写脚本进行自动化监控和报警。

5.2.3 SLOWLOG:慢查询日志

SLOWLOG 用于记录执行时间超过指定阈值的命令。这对于发现和优化慢命令非常有帮助。

  • SLOWLOG GET [count]: 获取慢查询日志。
  • SLOWLOG LEN: 获取慢查询日志的长度。
  • SLOWLOG RESET: 清空慢查询日志。

bash
redis-cli SLOWLOG GET 5 # 获取最近的5条慢查询日志

输出通常包含:ID、时间戳、执行耗时 (微秒)、命令和参数、客户端 IP:端口、客户端名称。

配置慢查询阈值:
* slowlog-log-slower-than: 命令执行时间超过多少微秒被记录为慢查询 (默认 10000 微秒,即 10 毫秒)。
* slowlog-max-len: 慢查询日志的最大条目数 (默认 128)。
这些配置可以通过 CONFIG SET 命令动态修改。

bash
redis-cli CONFIG SET slowlog-log-slower-than 5000 # 设置阈值为 5 毫秒
redis-cli CONFIG SET slowlog-max-len 256 # 设置最大记录条数为 256

5.2.4 LATENCY:延迟分析

LATENCY 命令提供了一种方式来检查 Redis 事件的延迟。

bash
redis-cli LATENCY LATEST # 查看最近的事件延迟统计
redis-cli LATENCY HISTORY command # 查看特定命令的延迟历史
redis-cli LATENCY RESET # 重置延迟统计

这对于分析 Redis 响应性能瓶颈非常有用。

5.2.5 CLIENT 命令:管理客户端

CLIENT LIST: 列出所有连接到服务器的客户端信息。
CLIENT KILL <ip:port>: 杀死指定 IP 和端口的客户端连接。
CLIENT GETNAME: 获取当前客户端的名称。
CLIENT SETNAME <name>: 设置当前客户端的名称。

bash
redis-cli CLIENT LIST

输出会显示每个客户端的 ID、地址、端口、空闲时间、最近执行的命令等。

5.3 Redis Cluster 管理

redis-cli 在 Redis Cluster 模式下扮演着核心管理工具的角色。它提供了 --cluster 子命令来执行集群的创建、节点添加、检查、修复和重新分片等操作。

连接集群:
在连接集群时,需要使用 -c 参数,redis-cli 才能自动处理重定向 (MOVED/ASK):

bash
redis-cli -c -h <cluster_node_ip> -p <cluster_node_port>

然后,您可以像操作单机 Redis 一样执行命令,redis-cli 会自动将命令路由到正确的槽位。

集群管理子命令 (通过 --cluster 使用):

  • 创建集群:
    bash
    redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

    这会创建一个包含 3 个主节点和 3 个从节点的集群 (每个主节点带一个从节点)。

  • 添加主节点:
    bash
    redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000

    将 7006 节点作为主节点添加到以 7000 为种子节点的集群中。

  • 添加从节点:
    bash
    redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id <master_node_id>

    将 7007 节点作为指定主节点的从节点添加到集群中。

  • 删除节点:
    bash
    redis-cli --cluster del-node 127.0.0.1:7000 <node_id_to_delete>

  • 重新分片 (Resharding):
    bash
    redis-cli --cluster reshard 127.0.0.1:7000 --cluster-from <source_node_id> --cluster-to <target_node_id> --cluster-slots 100

    重新分配槽位,这是集群负载均衡的关键操作。

  • 检查集群状态:
    bash
    redis-cli --cluster check 127.0.0.1:7000

    检查集群的健康状况,如槽位分配、节点状态等。

  • 修复集群:
    bash
    redis-cli --cluster fix 127.0.0.1:7000

    尝试修复集群中的一些常见问题,如槽位丢失。

5.4 Pub/Sub (发布/订阅)

redis-cli 可以作为发布者或订阅者参与到 Redis 的发布/订阅系统中。

作为订阅者:
打开一个终端,订阅一个或多个频道:
bash
redis-cli SUBSCRIBE mychannel chatroom

当有消息发布到这些频道时,redis-cli 会实时显示:
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "mychannel"
3) (integer) 1
1) "subscribe"
2) "chatroom"
3) (integer) 2
1) "message"
2) "mychannel"
3) "Hello from publisher!"

作为发布者:
在另一个终端发布消息:
bash
redis-cli PUBLISH mychannel "Hello from publisher!"

您会看到订阅者终端收到这条消息。

模式订阅:
可以使用 PSUBSCRIBE (Pattern SUBSCRIBE) 订阅符合特定模式的频道:
bash
redis-cli PSUBSCRIBE news.* # 订阅所有以 "news." 开头的频道

5.5 数据分析与辅助工具

redis-cli 还包含一些用于数据分析和辅助任务的特殊模式。

  • --hotkeys:查找热点键
    这个命令通过扫描键空间,并结合服务器的 MONITOR 输出(或者通过 Redis 内部机制),来估算哪些键被访问得最频繁。
    bash
    redis-cli --hotkeys

    输出会列出访问次数最多的键,对于识别系统瓶颈和优化缓存策略非常有价值。

  • --rdb:解析 RDB 文件
    redis-cli 可以解析 Redis 的 RDB 持久化文件,并将其内容以可读格式打印出来。
    bash
    redis-cli --rdb /path/to/dump.rdb

    这对于检查 RDB 文件内容、数据恢复或分析数据结构分布很有帮助。

  • --scan:迭代扫描键
    SCAN 命令是 Redis 提供的用于迭代键空间的命令,它避免了 KEYS * 命令可能导致的阻塞问题。redis-cli --scanSCAN 命令的简化版本,它会自动处理游标迭代,直到扫描完所有键。

    bash
    redis-cli --scan

    这会列出 Redis 数据库中的所有键,适合在生产环境代替 KEYS *

第六章:实用技巧、最佳实践与故障排查

6.1 实用技巧

  • --raw--no-raw 默认情况下,redis-cli 会以美观的格式打印响应。--raw 会输出原始的字节数据,而 --no-raw 则会强制进行格式化。在脚本中处理原始数据时,--raw 很有用。
    bash
    redis-cli GET mykey --raw | xargs echo # 获取原始值并传给其他命令
  • --latency-history--latency-dist 更详细的延迟分析工具,可以提供历史延迟数据和延迟分布直方图。
    bash
    redis-cli --latency-history -i 1 # 每秒报告一次延迟
    redis-cli --latency-dist # 显示延迟分布直方图
  • --stat:实时统计
    以一个简单的表格形式,每秒刷新一次,显示 Redis 的实时统计信息 (例如 QPS、内存使用、连接数等)。
    bash
    redis-cli --stat

    非常适合快速查看服务器的负载情况。
  • 重定向输出:redis-cli 的输出重定向到文件,方便后续分析。
    bash
    redis-cli INFO > redis_info.txt

6.2 最佳实践

  • 生产环境谨慎使用 KEYS * KEYS * 命令会遍历所有键,对于大型数据库,这可能导致 Redis 服务器阻塞数秒甚至数十秒,严重影响生产服务的可用性。应该优先使用 SCAN 命令或 redis-cli --scan 进行键的迭代。
  • 密码安全: 避免在命令行中明文输入密码。优先使用 REDISCLI_AUTH 环境变量或进入交互模式后使用 AUTH 命令。
  • 利用管道优化批量操作: 对于需要执行大量命令的场景,使用 redis-cli --pipe 能够显著提高性能,减少网络往返开销。
  • 定期监控 INFOSLOWLOG 持续关注 Redis 的性能指标和慢查询日志,有助于及时发现和解决潜在问题。
  • 善用 -n 区分数据库: 如果使用了多个数据库,在连接时明确指定 -n 参数,避免在错误的数据库上操作。
  • 限制 MONITOR 使用: MONITOR 是一个强大的调试工具,但其对性能影响较大,仅在必要时短时间使用。
  • 理解命令输出: redis-cli 会格式化输出,但了解 Redis 协议的原始响应类型(Simple String, Error, Integer, Bulk String, Array)有助于更好地理解和处理输出。

6.3 故障排查常见问题

  • 连接失败 (Connection refused):
    • 原因: Redis 服务器未运行,或运行在非默认端口/IP,或防火墙阻止了连接。
    • 解决方案:
      • 检查 Redis 服务是否启动 (systemctl status redisps -ef | grep redis)。
      • 确认 -h-p 参数是否正确。
      • 检查服务器防火墙规则是否允许 redis-cli 所在机器的 IP 访问 Redis 端口。
      • 检查 Redis 配置文件 (redis.conf) 中的 bindport 设置。
  • 认证失败 (Authentication required):
    • 原因: Redis 服务器配置了密码,但 redis-cli 未提供或提供了错误的密码。
    • 解决方案: 使用 -a <password> 参数,或在交互模式下使用 AUTH <password>。确认密码是否正确。
  • 命令返回 (error) OOM command not allowed when used memory > 'maxmemory'
    • 原因: Redis 内存使用量已达到 maxmemory 上限,且淘汰策略无法有效释放内存,导致写入操作被拒绝。
    • 解决方案:
      • 检查 INFO memory 查看内存使用情况。
      • 优化数据结构,减少内存占用。
      • 调整 maxmemory 配置或 maxmemory-policy
      • 考虑增加服务器内存或扩展 Redis 集群。
  • KEYS * 命令导致 redis-cli 假死或服务器响应缓慢:
    • 原因: 数据库中键数量巨大,KEYS * 命令是阻塞的,会遍历所有键。
    • 解决方案: 使用 SCAN 命令或 redis-cli --scan 进行迭代扫描。
  • 集群模式下命令报错 (error) MOVED <slot> <ip:port>(error) ASK <slot> <ip:port>
    • 原因: 未启用集群模式 (-c 参数) 或者连接的节点不是集群中的有效节点,导致 redis-cli 无法自动处理命令重定向。
    • 解决方案: 确保使用 redis-cli -c -h ... -p ... 连接到集群。

总结:驾驭 redis-cli,释放 Redis 潜能

redis-cli 作为 Redis 的官方命令行客户端,其重要性不言而喻。它不仅是与 Redis 服务器进行基本交互的入口,更是进行性能分析、故障排查、自动化管理和集群维护的强大工具集。

从最基本的连接与命令执行,到掌握管道模式提升性能,再到利用 INFOMONITORSLOWLOG 等命令深入洞察服务器状态,以及利用 --cluster 管理复杂的 Redis 集群,redis-cli 的学习曲线既平缓又深入。

通过本文的详细介绍,希望您能对 redis-cli 有一个全面而深入的理解,并能够熟练运用其各项功能来更高效地管理和操作 Redis。记住,熟能生巧,多加实践是掌握任何工具的关键。祝您在 Redis 的世界中畅游无阻,成为真正的 redis-cli 大师!

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部