值型別與寫入語意
最後更新
本頁說明 ToriiDB 如何判定儲存值的型別,以及 SetDefault、SetNX、SetXX 寫入時的行為。
值型別
每次寫入都會依下列順序從原始字串偵測型別:
| 順序 | 型別 | 規則 | String() |
|---|---|---|---|
| 1 | TypeJSON |
合法 JSON,且去除空白後以 {/[ 開頭、}/] 結尾 |
json |
| 2 | TypeInt |
strconv.ParseInt(value, 10, 64) 成功 |
int |
| 3 | TypeFloat |
strconv.ParseFloat(value, 64) 成功 |
float |
| 4 | TypeBool |
恰為 true 或 false |
bool |
| 5 | TypeDate |
RFC 3339 或 2006-01-02 |
date |
| 6 | TypeString |
其他 | string |
"007" 會被判為 int,但它不是合法 JSON number;因此 daemon 在把這類值當成原始 JSON 送出前會再用 json.Valid 檢查。
寫入語意
| Flag | 行為 |
|---|---|
SetDefault |
Upsert |
SetNX |
鍵已存在時失敗:key already exists |
SetXX |
鍵不存在時失敗:key not found |
覆寫鍵會取代值、型別與 ExpireAt,設定 UpdatedAt,並清除 Vector,因為舊 embedding 已不代表新文字。expireAt 是絕對 Unix 時間戳;REPL 會把結尾的 <seconds> 轉成時間戳。