] # INFO **What it does** Returns server stats in a human-readable text block, optionally filtered by sections. Typical sections: `server`, `clients`, `memory`, `persistence`, `stats`, `replication`, `cpu`, `commandstats`, `latencystats`, `cluster`, `modules`, `keyspace`, `errorstats`. Special args: `all`, `default`, `everything`. The reply is a **Bulk String** with `#
` headers and `key:value` lines. ([Redis][1]) **Syntax** ``` INFO [section [section ...]] ``` **Return (RESP2/RESP3)**: Bulk String. ([Redis][1]) **RESP request/response** ``` # Request: whole default set *1\r\n$4\r\nINFO\r\n # Request: a specific section, e.g., clients *2\r\n$4\r\nINFO\r\n$7\r\nclients\r\n # Response (prefix shown; body is long) $1234\r\n# Server\r\nredis_version:7.4.0\r\n...\r\n# Clients\r\nconnected_clients:3\r\n...\r\n ``` (Reply type/format per RESP spec and the INFO page.) ([Redis][2]) --- # Connection “name” (there is **no** top-level `NAME` command) Redis doesn’t have a standalone `NAME` command. Connection names are handled via `CLIENT SETNAME` and retrieved via `CLIENT GETNAME`. ([Redis][3]) ## CLIENT SETNAME Assigns a human label to the current connection (shown in `CLIENT LIST`, logs, etc.). No spaces allowed in the name; empty string clears it. Length is limited by Redis string limits (practically huge). **Reply**: Simple String `OK`. ([Redis][4]) **Syntax** ``` CLIENT SETNAME connection-name ``` **RESP** ``` # Set the name "myapp" *3\r\n$6\r\nCLIENT\r\n$7\r\nSETNAME\r\n$5\r\nmyapp\r\n # Reply +OK\r\n ``` ## CLIENT GETNAME Returns the current connection’s name or **Null Bulk String** if unset. ([Redis][5]) **Syntax** ``` CLIENT GETNAME ``` **RESP** ``` # Before SETNAME: *2\r\n$6\r\nCLIENT\r\n$7\r\nGETNAME\r\n $-1\r\n # nil (no name) # After SETNAME myapp: *2\r\n$6\r\nCLIENT\r\n$7\r\nGETNAME\r\n $5\r\nmyapp\r\n ``` (Null/Bulk String encoding per RESP spec.) ([Redis][2]) --- # CLIENT (container command + key subcommands) `CLIENT` is a **container**; use subcommands like `CLIENT LIST`, `CLIENT INFO`, `CLIENT ID`, `CLIENT KILL`, `CLIENT TRACKING`, etc. Call `CLIENT HELP` to enumerate them. ([Redis][3]) ## CLIENT LIST Shows all connections as a single **Bulk String**: one line per client with `field=value` pairs (includes `id`, `addr`, `name`, `db`, `user`, `resp`, and more). Filters: `TYPE` and `ID`. **Return**: Bulk String (RESP2/RESP3). ([Redis][6]) **Syntax** ``` CLIENT LIST [TYPE ] [ID client-id ...] ``` **RESP** ``` *2\r\n$6\r\nCLIENT\r\n$4\r\nLIST\r\n # Reply (single Bulk String; example with one line shown) $188\r\nid=7 addr=127.0.0.1:60840 laddr=127.0.0.1:6379 fd=8 name=myapp age=12 idle=3 flags=N db=0 ...\r\n ``` ## CLIENT INFO Returns info for **this** connection only (same format/fields as a single line of `CLIENT LIST`). **Return**: Bulk String. Available since 6.2.0. ([Redis][7]) **Syntax** ``` CLIENT INFO ``` **RESP** ``` *2\r\n$6\r\nCLIENT\r\n$4\r\nINFO\r\n $160\r\nid=7 addr=127.0.0.1:60840 laddr=127.0.0.1:6379 fd=8 name=myapp db=0 user=default resp=2 ...\r\n ``` --- # RESP notes you’ll need for your parser * **Requests** are Arrays: `*N\r\n` followed by `N` Bulk Strings for verb/args. * **Common replies here**: Simple String (`+OK\r\n`), Bulk String (`$\r\n...\r\n`), and **Null Bulk String** (`$-1\r\n`). (These cover `INFO`, `CLIENT LIST/INFO`, `CLIENT GETNAME`, `CLIENT SETNAME`.) ([Redis][2]) --- ## Sources (checked) * INFO command (syntax, sections, behavior). ([Redis][1]) * RESP spec (request/response framing, Bulk/Null Bulk Strings). ([Redis][2]) * CLIENT container + subcommands index. ([Redis][3]) * CLIENT LIST (fields, bulk-string return, filters). ([Redis][6]) * CLIENT INFO (exists since 6.2, reply format). ([Redis][7]) * CLIENT SETNAME (no spaces; clears with empty string; huge length OK). ([Redis][4]) * CLIENT GETNAME (nil if unset). ([Redis][5]) If you want, I can fold this into a tiny Rust “command + RESP” test harness that exercises `INFO`, `CLIENT SETNAME/GETNAME`, `CLIENT LIST`, and `CLIENT INFO` against your in-mem RESP parser. [1]: https://redis.io/docs/latest/commands/info/ "INFO | Docs" [2]: https://redis.io/docs/latest/develop/reference/protocol-spec/?utm_source=chatgpt.com "Redis serialization protocol specification | Docs" [3]: https://redis.io/docs/latest/commands/client/ "CLIENT | Docs" [4]: https://redis.io/docs/latest/commands/client-setname/?utm_source=chatgpt.com "CLIENT SETNAME | Docs" [5]: https://redis.io/docs/latest/commands/client-getname/?utm_source=chatgpt.com "CLIENT GETNAME | Docs" [6]: https://redis.io/docs/latest/commands/client-list/ "CLIENT LIST | Docs" [7]: https://redis.io/docs/latest/commands/client-info/?utm_source=chatgpt.com "CLIENT INFO | Docs"