初步实验使用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,33 @@
// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn .
package kvstore
type CounterTable[T int64 | uint64] struct {
*Table[T]
}
func NewCounterTable[T int64 | uint64](name string) (*CounterTable[T], error) {
table, err := NewTable[T](name, NewIntValueEncoder[T]())
if err != nil {
return nil, err
}
return &CounterTable[T]{
Table: table,
}, nil
}
func (this *CounterTable[T]) Increase(key string, delta T) (newValue T, err error) {
err = this.Table.WriteTx(func(tx *Tx[T]) error {
value, getErr := tx.Get(key)
if getErr != nil {
if !IsKeyNotFound(getErr) {
return getErr
}
}
newValue = value + delta
return tx.Set(key, newValue)
})
return
}