COMMAND-INFO(3valkey)
π COMMAND-INFO π
okay so bestie, welcome to command-info β it's a page from the Valkey Command Manual and it is genuinely one of the most useful little gremlins in the whole command family. sit down, grab a boba, we're doing this. π§β¨
β¨ NAME β¨
command-info β returns information about one, multiple or all commands. that's it, that's the whole job, and it does it flawlessly. π
π SYNOPSIS π
COMMAND INFO command-name [command-name...]
π¦ DESCRIPTION π¦
So basically: this returns an @array-reply stuffed with details about multiple Valkey commands. π
Same result format as valkey-command(7) COMMAND β except you get to pick which commands get returned. it's giving "I choose my own adventure". π
And the plot twist you need to know: if you request details about non-existing commands, their return position will be nil. not an error, not a whole crash, just a lil nil sitting there in the slot. so if you ask for five commands and one of them isn't real, you get four vibes and one nil. π
π«Ά REPLY π«Ά
valkey-protocol(7) Array reply: a nested list of command details. yes bestie, it's arrays inside arrays inside arrays. it's giving matryoshka doll energy. πͺ
π COMPLEXITY π
O(N) where N is the number of commands to look up. linear, clean, no drama. β
πΈ ACL CATEGORIES πΈ
@connection@slow
π HISTORY π
- Available since: 2.8.13 β ancient. iconic. been here since forever. π°οΈ
- Changed in 7.0.0: allowed to be called with no argument to get info on all commands. so you can literally just vibe and ask for everything. π₯
π EXAMPLES π
okay this is the part where it gets long and I will not be skimping on a single character of it, because every number here matters. buckle up. π
127.0.0.1:6379> COMMAND INFO get set eval
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) RO
2) access
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)
2) 1) "set"
2) (integer) -3
3) 1) write
2) denyoom
4) (integer) 1
5) (integer) 1
6) (integer) 1
7) 1) @write
2) @string
3) @slow
8) (empty array)
9) 1) 1) "notes"
2) "RW and ACCESS due to the optional `GET` argument"
3) "flags"
4) 1) RW
2) access
3) update
4) variable_flags
5) "begin_search"
6) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 1
7) "find_keys"
8) 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)
3) 1) "eval"
2) (integer) -3
3) 1) noscript
2) stale
3) skip_monitor
4) no_mandatory_keys
5) movablekeys
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @slow
2) @scripting
8) (empty array)
9) 1) 1) "notes"
2) "We cannot tell how the keys will be used so we assume the worst, RW and UPDATE"
3) "flags"
4) 1) RW
2) access
3) update
5) "begin_search"
6) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 2
7) "find_keys"
8) 1) "type"
2) "keynum"
3) "spec"
4) 1) "keynumidx"
2) (integer) 0
3) "firstkey"
4) (integer) 1
5) "keystep"
6) (integer) 1
10) (empty array)
127.0.0.1:6379> COMMAND INFO foo evalsha config bar
1) (nil)
2) 1) "evalsha"
2) (integer) -3
3) 1) noscript
2) stale
3) skip_monitor
4) no_mandatory_keys
5) movablekeys
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @slow
2) @scripting
8) (empty array)
9) 1) 1) "flags"
2) 1) RW
2) access
3) update
3) "begin_search"
4) 1) "type"
2) "index"
3) "spec"
4) 1) "index"
2) (integer) 2
5) "find_keys"
6) 1) "type"
2) "keynum"
3) "spec"
4) 1) "keynumidx"
2) (integer) 0
3) "firstkey"
4) (integer) 1
5) "keystep"
6) (integer) 1
10) (empty array)
3) 1) "config"
2) (integer) -2
3) (empty array)
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @slow
8) (empty array)
9) (empty array)
10) 1) 1) "config|rewrite"
2) (integer) 2
3) 1) admin
2) noscript
3) loading
4) stale
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @admin
2) @slow
3) @dangerous
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
2) 1) "config|resetstat"
2) (integer) 2
3) 1) admin
2) noscript
3) loading
4) stale
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @admin
2) @slow
3) @dangerous
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
3) 1) "config|help"
2) (integer) 2
3) 1) loading
2) stale
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @slow
8) (empty array)
9) (empty array)
10) (empty array)
4) 1) "config|get"
2) (integer) -3
3) 1) admin
2) noscript
3) loading
4) stale
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @admin
2) @slow
3) @dangerous
8) (empty array)
9) (empty array)
10) (empty array)
5) 1) "config|set"
2) (integer) -4
3) 1) admin
2) noscript
3) loading
4) stale
4) (integer) 0
5) (integer) 0
6) (integer) 0
7) 1) @admin
2) @slow
3) @dangerous
8) 1) "request_policy:all_nodes"
2) "response_policy:all_succeeded"
9) (empty array)
10) (empty array)
4) (nil)
see how foo and bar are just straight up (nil)? π not real commands, not real answers. and config came back with a whole sub-command situation in slot 10. she's a container command, she contains multitudes. π
π SEE ALSO π
acl(3valkey), acl-cat(3valkey), acl-deluser(3valkey), acl-dryrun(3valkey), acl-genpass(3valkey), acl-getuser(3valkey), acl-help(3valkey), acl-list(3valkey), acl-load(3valkey), acl-log(3valkey), acl-save(3valkey), acl-setuser(3valkey), acl-users(3valkey), acl-whoami(3valkey), bgrewriteaof(3valkey), bgsave(3valkey), command(3valkey), command-count(3valkey), command-docs(3valkey), command-getkeys(3valkey), command-getkeysandflags(3valkey), command-help(3valkey), command-list(3valkey), commandlog(3valkey), commandlog-get(3valkey), commandlog-help(3valkey), commandlog-len(3valkey), commandlog-reset(3valkey), config(3valkey), config-get(3valkey), config-help(3valkey), config-resetstat(3valkey), config-rewrite(3valkey), config-set(3valkey), dbsize(3valkey), debug(3valkey), failover(3valkey), flushall(3valkey), flushdb(3valkey), info(3valkey), lastsave(3valkey), latency(3valkey), latency-doctor(3valkey), latency-graph(3valkey), latency-help(3valkey), latency-histogram(3valkey), latency-history(3valkey), latency-latest(3valkey), latency-reset(3valkey), lolwut(3valkey), memory(3valkey), memory-doctor(3valkey), memory-help(3valkey), memory-malloc-stats(3valkey), memory-purge(3valkey), memory-stats(3valkey), memory-usage(3valkey), module(3valkey), module-help(3valkey), module-list(3valkey), module-load(3valkey), module-loadex(3valkey), module-unload(3valkey), monitor(3valkey), psync(3valkey), replconf(3valkey), replicaof(3valkey), restore-asking(3valkey), role(3valkey), save(3valkey), shutdown(3valkey), slowlog(3valkey), slowlog-get(3valkey), slowlog-help(3valkey), slowlog-len(3valkey), slowlog-reset(3valkey), swapdb(3valkey), sync(3valkey), time(3valkey)
and that's the whole page, bestie!! πβ¨π¦
this one's from Valkey 9.0.0, dated 2025-10-21 β go forth and COMMAND INFO responsibly, mwah π«Άπ
π¦ where this page comes from
- fedora 44: valkey-doc 9.0.3-2.fc44 Β· CC-BY-SA-4.0
- fedora 44: valkey-doc 9.0.6-1.fc44 Β· CC-BY-SA-4.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms