初步实验使用KV数据库(pebble)存储缓存索引

This commit is contained in:
GoEdgeLab
2024-03-24 11:25:35 +08:00
parent f4c4a2d5fa
commit 83a086f67f
36 changed files with 4564 additions and 21 deletions

View File

@@ -0,0 +1,65 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package kvstore_test
import (
"fmt"
"github.com/TeaOSLab/EdgeNode/internal/utils/kvstore"
"testing"
)
func TestTable_ReadTx(t *testing.T) {
store, err := kvstore.OpenStore("test")
if err != nil {
t.Fatal(err)
}
defer func() {
_ = store.Close()
}()
db, err := store.NewDB("TEST_DB")
if err != nil {
t.Fatal(err)
}
table, err := kvstore.NewCounterTable[uint64]("users_counter")
if err != nil {
t.Fatal(err)
}
db.AddTable(table)
err = table.WriteTx(func(tx *kvstore.Tx[uint64]) error {
for i := 0; i < 1000; i++ {
var key = fmt.Sprintf("a%03d", i)
setErr := tx.Set(key, uint64(i))
if setErr != nil {
return setErr
}
value, getErr := tx.Get(key)
if getErr != nil {
return getErr
}
t.Log("write:", key, "=>", value)
}
return nil
})
if err != nil {
t.Fatal(err)
}
err = table.ReadTx(func(tx *kvstore.Tx[uint64]) error {
for _, key := range []string{"a100", "a101", "a102"} {
value, getErr := tx.Get(key)
if getErr != nil {
return getErr
}
t.Log("read:", key, "=>", value)
}
return nil
})
if err != nil {
t.Fatal(err)
}
}