文件

快速開始

安裝 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

輸入 quitexit 即可離開。收到 SIGINTSIGTERM 時,用戶端也會先關閉 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 提供編號 015 的 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

後續閱讀

EN