cache: use badgerdb (#15)

This commit is contained in:
l3uddz
2021-02-19 22:20:02 +00:00
committed by GitHub
parent e1945cf714
commit 5b179ed8dc
13 changed files with 175 additions and 77 deletions

27
cache/get.go vendored
View File

@@ -2,17 +2,34 @@ package cache
import (
"fmt"
"github.com/xujiajun/nutsdb"
"github.com/dgraph-io/badger/v3"
)
func (c *Client) Get(bucket string, key string) ([]byte, error) {
var value []byte
if err := c.db.View(func(tx *nutsdb.Tx) error {
e, err := tx.Get(bucket, []byte(key))
if err := c.db.View(func(txn *badger.Txn) error {
// get key
v, err := txn.Get([]byte(fmt.Sprintf("%s_%s", bucket, key)))
if err != nil {
return fmt.Errorf("%v: %v; get: %w", bucket, key, err)
return fmt.Errorf("%v: %v: get error: %w", bucket, key, err)
}
value = e.Value
// validate value
if v.IsDeletedOrExpired() {
return fmt.Errorf("%v: %v: get: key does not exist", bucket, key)
}
// read value
err = v.Value(func(val []byte) error {
value = val
return nil
})
if err != nil {
return fmt.Errorf("%v: %v: get: value error: %w", bucket, key, err)
}
return nil
}); err != nil {
return nil, err