cache: use badgerdb (#15)
This commit is contained in:
27
cache/get.go
vendored
27
cache/get.go
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user