redis-获取redis 的command命令详情

1.redis-获取redis 的command命令详情 

 192.168.1.2:6400> command
  1) 1) "zlexcount"
     2) (integer) 4
     3) 1) readonly
        2) fast
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1
     7) 1) @read
        2) @sortedset
        3) @fast
  2) 1) "replicaof"
     2) (integer) 3
     3) 1) admin
        2) noscript
        3) stale
     4) (integer) 0
     5) (integer) 0
     6) (integer) 0
     7) 1) @admin
        2) @slow
        3) @dangerous
.....................

Command
获取 Redis 命令详情数组
语法
COMMAND
可用版本:
2.8.13

时间复杂度:
O(N) 其中 N 是 Redis 命令的总数

ACL 类别:
@slow, @connection

返回一个包含每个 Redis 命令详细信息的数组。
该COMMAND命令是内省的。它的回复描述了服务器可以处理的所有命令。Redis 客户端可以在握手期间调用它来获取服务器的运行时能力。
COMMAND还有几个子命令。

集群注意事项: 此命令对于支持集群的客户端特别有用。此类客户端必须识别命令中的键名,才能将请求路由到正确的分片。
尽管大多数命令都接受一个键作为它们的第一个参数,但这条规则有很多例外。您可以调用COMMAND并将命令之间的映射与其各自的密钥规范规则缓存在客户端中。
它返回的回复是一个数组,每个命令都有一个元素。描述 Redis 命令的每个元素本身都表示为一个数组。
该命令的数组由固定数量的元素组成。数组中元素的确切数量取决于服务器的版本。

     1) "auth"
     2) (integer) -2
     3) 1) noscript
        2) loading
        3) stale
        4) fast
        5) no_auth
     4) (integer) 0
     5) (integer) 0
     6) (integer) 0
     7) 1) @fast
        2) @connection

1)Name
2)Arity
3)Flags
4)First key
5)Last key
6)Step

ACL 类别(从 Redis 6.0 开始)
提示(从 Redis 7.0 开始)
关键规范(从 Redis 7.0 开始)
子命令(从 Redis 7.0 开始)
 
这是小写的命令名称。

注意: Redis 命令名称不区分大小写。


Arity 是命令期望的参数数量。它遵循一个简单的模式:

正整数表示固定数量的参数。
负整数表示最少数量的参数。
命令 arity 始终包括命令的名称本身(以及适用时的子命令)。

例子:

GET 的 arity 为2,因为该命令仅接受一个参数并且始终具有格式GET _key_.
MGET的 arity 为*-2*,因为该命令至少接受一个参数,但可能接受多个参数:MGET _key1_ [key2] [key3] ....
#标志
命令标志是一个数组。它可以包含以下简单字符串(状态回复):

admin :该命令是一个管理命令。
问:即使在哈希槽迁移期间也允许该命令。此标志与 Redis 集群部署相关。
阻塞:该命令可能会阻塞请求的客户端。
denyoom :如果服务器的内存使用率太高,该命令将被拒绝(请参阅maxmemory配置指令)。
fast :命令以恒定或 log(N) 时间运行。此标志用于使用 LATENCY 命令监视延迟。
loading :在加载数据库时允许该命令。
movablekeys :第一个键、最后一个键和步长值并不能确定所有键的位置。在这种情况下,客户需要使用COMMAND GETKEYS
no_auth :执行命令不需要认证。
no_async_loading :该命令在异步加载期间被拒绝(即当副本使用无磁盘SWAPDB SYNC并允许访问旧数据集时)。
no_mandatory_keys :该命令可以接受键名参数,但这些不是强制性的。
no_multi :在事务的上下文中不允许该命令。
noscript :不能从脚本或函数调用该命令。
pubsub :该命令与Redis Pub/Sub相关。
random :该命令返回随机结果,这是逐字脚本复制的一个问题。从 Redis 7.0 开始,这个标志是一个命令提示。
readonly :该命令不修改数据。
sort_for_script :命令的输出在从脚本调用时进行排序。
skip_monitor :该命令未显示在MONITOR的输出中。
skip_slowlog :该命令未显示在SLOWLOG的输出中。从 Redis 7.0 开始,这个标志是一个命令提示。
stale :当一个副本有过时的数据时,该命令是允许的。
write :该命令可以修改数据。

#可动keys
考虑SORT:
1) 1) "sort"
     2) (integer) -2
     3) 1) write
        2) denyoom
        3) movablekeys
     4) (integer) 1
     5) (integer) 1
     6) (integer) 1
     7) 1) @write
        2) @set
        3) @sortedset
        4) @list
        5) @slow
        6) @dangerous
   ...
一些 Redis 命令没有预先确定的关键位置或不容易找到。对于这些命令,movablekeys 标志表示first key、last key和step值不足以找到所有键。
以下是几个具有可移动键标志的命令示例:

SORT: 可选的STORE、BY和GET修饰符后跟键名。
ZUNION: numkeys参数指定数字键名参数。
MIGRATE: 键出现KEYS关键字且仅当第二个参数为空字符串时。
Redis 集群客户端需要使用以下其他措施来定位此类命令的键。

您可以使用该COMMAND GETKEYS命令并让您的 Redis 服务器报告给定命令调用的所有键。
从 Redis 7.0 开始,客户端可以使用键规范来识别键名的位置。唯一需要使用的命令COMMAND GETKEYS是SORT和MIGRATE用于解析密钥规范的客户端。

#第一把key
命令的第一个键名参数的位置。对于大多数命令,第一个键的位置是 1。位置 0 始终是命令名称本身。

#最后一个键
命令的最后一个键名参数的位置。Redis 命令通常接受一个、两个或多个键。
接受单个键的命令将第一个键和最后一个键都设置为 1。
接受两个键名参数的命令,例如和BRPOPLPUSH,将此值设置为其第二个键的位置。[SMOVE``RENAME
接受任意数量的键的多键命令,例如MSET,使用值 -1。

#步骤
第一个键和下一个键的位置之间的步长或增量。
考虑以下两个示例:

1) 1) "mset"
   2) (integer) -3
   3) 1) write
      2) denyoom
   4) (integer) 1
   5) (integer) -1
   6) (integer) 2
   ...
1) 1) "mget"
   2) (integer) -2
   3) 1) readonly
      2) fast
   4) (integer) 1
   5) (integer) -1
   6) (integer) 1
   ...
步数允许我们找到键的位置。例如MSET:它的语法是
MSET _key1_ _val1_ [key2] [val2] [key3] [val3]...,所以键在每隔一个位置(步长值为2)。与 不同MGET,它使用步长值1。

#ACL 类别
这是一个简单字符串数组,它们是命令所属的 ACL 类别。

#命令提示
有关命令的有用信息。供客户/代理使用。
#主要规格
这是一个由命令的关键规范组成的数组。数组中的每个元素都是一个映射,描述了在命令参数中定位键的方法。
#子命令
这是一个包含所有命令子命令(如果有)的数组。一些 Redis 命令有子命令(例如, 的REWRITE子命令CONFIG)。
COMMAND数组中的每个元素代表一个子命令,并遵循与回复相同的规范。

#返回
数组回复:命令详细信息的嵌套列表。
数组中的命令顺序是随机的。

#例子
以下是该命令COMMAND的输出:GET
1)  1) "get"
    2) (integer) 2
    3) 1) readonly
       2) fast
    4) (integer) 1
    5) (integer) 1
    6) (integer) 1
    7) 1) @read
       2) @string
       3) @fast
    8) (empty array)
    9) 1) 1) "flags"
          2) 1) read
          3) "begin_search"
          4) 1) "type"
             2) "index"
             3) "spec"
             4) 1) "index"
                2) (integer) 1
          5) "find_keys"
          6) 1) "type"
             2) "range"
             3) "spec"
             4) 1) "lastkey"
                2) (integer) 0
                3) "keystep"
                4) (integer) 1
                5) "limit"
                6) (integer) 0
   10) (empty array)
...

<think>我们正在解决“redis-clicommandnotfound”的问题,该问题出现在Linux系统中安装Redis5.0.3时。根据引用[2]中的信息,出现类似错误是因为在编译Redis时缺少编译器(cc命令未找到)。因此,我们需要确保系统已安装必要的编译工具。此外,引用[3]和[4]提供了关于Redis集群搭建的步骤,但对我们当前问题的主要帮助是引用[2]中的错误信息。解决步骤:1.确保系统已安装gcc(GNU编译器集合)。如果没有,需要先安装gcc。2.进入Redis源码目录,进行清理(如果需要)并重新编译。3.编译后,redis-cli应该位于src目录下。我们可以将其添加到环境变量中,或者创建符号链接到/usr/local/bin等系统路径。具体步骤:步骤1:安装gcc在终端中执行以下命令安装gcc(以CentOS为例):sudoyuminstallgcc步骤2:进入Redis源码目录,重新编译cd/path/to/redis-5.0.3makedistclean#如果之前编译过,可能需要清理make步骤3:编译完成后,redis-cli位于src目录下。我们可以通过以下方式使用:-直接使用绝对路径:/path/to/redis-5.0.3/src/redis-cli-或者将redis-cli链接到/usr/local/bin(需要root权限):sudoln-s/path/to/redis-5.0.3/src/redis-cli/usr/local/bin/redis-cli-或者将redis-5.0.3/src目录添加到PATH环境变量中(例如,在~/.bashrc文件中添加exportPATH=$PATH:/path/to/redis-5.0.3/src,然后执行source~/.bashrc)注意:如果按照引用[3]中的方式,他们使用了/usr/local/bin/redis-server来启动,这意味着他们可能已经将redis-server和redis-cli等可执行文件复制或链接到了/usr/local/bin目录下。我们可以采用同样的方法。如果以上步骤仍然不能解决问题,请检查编译过程中是否有其他错误。根据引用[2]中的错误信息,最初是因为没有安装gcc导致编译失败。因此,确保gcc安装成功是关键。另外,引用[1]和[3]提供了启动Redis服务器的方法,但对我们当前的问题(redis-cli命令未找到)来说,主要是编译和路径设置的问题。生成相关问题:1.如何安装gcc编译器?2.如何将可执行文件添加到系统路径?3.Redis编译安装的完整步骤是什么?4.如何设置Redis的环境变量?</think>### 解决 `redis-cli command not found` 问题 在 Linux 系统中遇到 `redis-cli command not found` 错误,通常由以下原因导致: #### 1. **未正确编译 Redis** Redis 需要先编译才能生成可执行文件。若未编译或编译失败,`redis-cli` 将不存在: ```bash cd /path/to/redis-5.0.3 make clean # 清理旧编译文件 make # 重新编译 ``` 编译成功后,`redis-cli` 会出现在 `src/` 目录。若编译报错 `cc: command not found`,需安装 GCC 编译器: ```bash sudo yum install gcc # CentOS/RedHat sudo apt install gcc # Ubuntu/Debian ``` [^2] #### 2. **可执行文件未加入系统路径** 编译后需手动将 `redis-cli` 链接到系统路径: ```bash # 创建软链接到 /usr/local/bin sudo ln -s /path/to/redis-5.0.3/src/redis-cli /usr/local/bin/redis-cli # 验证是否生效 which redis-cli # 应返回 /usr/local/bin/redis-cli ``` [^3] #### 3. **环境变量未配置** 若未使用软链接,可将 Redis 的 `src/` 目录加入 `PATH`: ```bash # 临时生效(仅当前终端) export PATH=$PATH:/path/to/redis-5.0.3/src # 永久生效(写入 ~/.bashrc 或 /etc/profile) echo 'export PATH=$PATH:/path/to/redis-5.0.3/src' >> ~/.bashrc source ~/.bashrc ``` #### 4. **安装路径错误** 确认 Redis 安装路径是否正确: ```bash # 查找 redis-cli find / -name redis-cli 2>/dev/null # 若找到路径(如 /opt/redis-5.0.3/src/redis-cli),手动执行测试 /path/to/redis-cli -v ``` --- ### 关键步骤总结 1. **安装 GCC 编译器** → 解决编译依赖问题 2. **执行 `make` 编译** → 生成 `src/redis-cli` 3. **链接到系统路径** → `sudo ln -s ... /usr/local/bin` 4. **验证** → `redis-cli -v` 应返回版本信息(如 `redis-cli 5.0.3`) > ⚠️ **注意**:若参考引用[3]集群配置,确保所有节点均完成编译和路径配置[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值