# 命令列參考

本頁彙整 `Exec` 與內附 REPL 接受的所有指令，以及共通的解析規則與 REPL 控制方式。

## 解析規則

- 輸入依空白切分；指令名稱不分大小寫。
- 多 token 的值以單一空白合併，連續空白會被壓縮。
- 參數數量錯誤回傳 `usage: ...`；未知指令回傳 `unknown: <CMD>`。
- 清單結果以編號行（`1) item`）呈現，無結果時為 `(empty list)`。

## 指令摘要

| 指令 | 語法 | 成功回應 |
|---|---|---|
| `GET` | `GET <key>` | 原始值，或 `(nil)` |
| `SET` | `SET <key> <value> [NX\|XX] [seconds] [VECTOR]` | `OK` |
| `EXIST` | `EXIST <key>` | `(integer) 1` 或 `(integer) 0` |
| `TYPE` | `TYPE <key>` | `json` `string` `int` `float` `bool` `date`，或 `(nil)` |
| `DEL` | `DEL <key> [key2] ...` | `(integer) n`，欄位為 `OK` |
| `INCR` | `INCR <key> [delta]` | 新數值 |
| `TTL` | `TTL <key>` | `(integer) n`，或 `(nil)` |
| `EXPIRE` | `EXPIRE <key> <seconds>` | `OK` |
| `EXPIREAT` | `EXPIREAT <key> <timestamp>` | `OK` |
| `PERSIST` | `PERSIST <key>` | `OK` |
| `KEYS` | `KEYS <pattern>` | 鍵清單 |
| `FIND` | `FIND <op> <value> [LIMIT <n>]` | 鍵清單 |
| `QUERY` | `QUERY <expression> [LIMIT <n>]` | `key: value` 清單 |
| `VSEARCH` | `VSEARCH <text> [MATCH <pattern>] [LIMIT <n>]` | 鍵清單 |
| `VSIM` | `VSIM <key1> <key2>` | `(float) score` |
| `VGET` | `VGET <key>` | JSON array |
| `SELECT` | `SELECT <db>` | `OK` |

`GET`、`EXIST`、`TYPE`、`SET`、`INCR` 與單一參數 `DEL` 的鍵若含 `.`，會存取 JSON 欄位；見 [JSON 文件](/zh/json-documents)與[寫入 JSON 欄位](/zh/json-documents-writes)。

## REPL 控制

`cmd/test/main.go` 開啟 `./temp`。`quit` 與 `exit` 由 REPL 處理，不是 `Exec` 指令。空行會被忽略。EOF、`SIGINT`、`SIGTERM` 會先關閉 store 再結束。

## 相關頁面

- [GET 與 SELECT](/zh/cli-reference-read)
- [SET、DEL、INCR](/zh/cli-reference-write)
- [掃描與向量](/zh/cli-reference-scan)
