v0.7.0

儲存後端

最後更新

HakoRun 以建置標籤在 ToriiDB 與 Redis 之間切換,兩者使用相同的 key 配置與版本語意。

選擇後端

後端 建置指令 位置 說明
ToriiDB make build(預設) ~/.config/pardnchiu/hakorun 內嵌儲存,不需額外服務
Redis make build redis(-tags redis) REDIS_HOST:REDIS_PORT 的 REDIS_DB 啟動時 PING 失敗即結束行程

兩者實作同一介面(internal/database/database.go):

type backend interface {
    Add(ctx context.Context, script Script) (int64, error)
    Get(ctx context.Context, path string, version int64) (*Script, error)
    Close() error
}

Key 配置

hash 為 md5(path) 的十六進位字串。

Key ToriiDB Redis
meta:<hash> JSON:path、language、latest、versions Hash:path、language、latest
code:<hash>:<timestamp> 程式碼字串 程式碼字串
版本清單 存在 meta 的 versions 陣列 Set meta:<hash>:version

寫入與讀取

操作 行為
Add ToriiDB 先寫 code 再寫 meta,確保 meta 不會指向不存在的版本;Redis 以 pipeline 一次送出
Get(version = 0) 讀 meta 的 latest 後取對應 code
Get(指定版本) 直接取 code:<hash>:<version>;不存在回 assign version not found
找不到 meta 回 script not found,handler 轉為 HTTP 404

Handler 對儲存操作使用 5 秒逾時。

相關頁面

EN