快速開始
安裝 ToriiDB、建立內嵌式 store,並啟動互動式指令用戶端。
系統需求
| 需求 | 版本或用途 |
|---|---|
| Go | 1.25 以上 |
| 本機檔案系統 | 儲存 AOF 紀錄與逐鍵 JSON 快取檔案 |
OPENAI_API_KEY |
選用;僅向量操作需要 |
安裝模組
在既有 Go module 中加入 ToriiDB:
go get github.com/pardnchiu/toriidb
或複製原始碼並建置所有套件:
git clone https://github.com/pardnchiu/toriidb
cd toriidb
go build ./...
建立 Store
store.New 可接受零個或一個儲存路徑。未傳入參數時,ToriiDB 會使用相對於程序工作目錄的 ./temp。
package main
import (
"fmt"
"log"
"github.com/pardnchiu/toriidb/core/store"
)
func main() {
db, err := store.New("./data")
if err != nil {
log.Fatal(err)
}
defer db.Close()
fmt.Println(db.Exec("SET greeting hello"))
fmt.Println(db.Exec("GET greeting"))
}
程序結束前應呼叫 Close。它會等待背景向量附加工作完成,並壓縮每個已載入資料庫的 append-only log。
啟動 REPL
專案內含一個簡易互動式用戶端:
go run cmd/test/main.go
最小操作範例如下:
toriidb[0]> SET counter 1
OK
toriidb[0]> INCR counter
2
toriidb[0]> GET counter
2
輸入 quit 或 exit 即可離開。收到 SIGINT 或 SIGTERM 時,用戶端也會先關閉 store 再結束程序。
操作 JSON 文件
點記法可指定巢狀物件欄位與陣列索引:
SET user {"name":"Torii","profile":{"level":1}}
GET user.name
SET user.profile.level 2
INCR user.profile.level
GET user.profile.level
欄位層級的 SET 會建立缺少的物件 map,但不會取代中間路徑上的 scalar 值;陣列索引則必須已存在且有效。
使用過期時間與資料庫
SET session abc123 300
TTL session
SELECT 1
SET cache warm
KEYS *
ToriiDB 提供編號 0 到 15 的 16 個邏輯資料庫。每個 session 會獨立追蹤目前資料庫,但共用底層 store。
啟用向量操作
啟動程序前匯出 OpenAI API key,再於 SET 指令尾端加上 VECTOR:
export OPENAI_API_KEY="your-api-key"
export TORIIDB_EMBED_DIM="256"
go run cmd/test/main.go
SET article:1 Redis-style embedded storage VECTOR
SET article:2 JSON document database VECTOR
VSEARCH embedded vector search LIMIT 2
VSIM article:1 article:2
VGET article:1
SET 成功後,向量會在背景附加,因此新資料可能要等短暫時間才會出現在語意搜尋結果中。
建置與測試
go build ./...
go test ./... -count=1
go vet ./...
專案 Makefile 亦提供:
| Target | 動作 |
|---|---|
make test |
啟動互動式用戶端 |
make unit |
執行 core 測試並量測 coverage |
make embed |
執行 OpenAI embedding integration test |