You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

53 lines
1004 B

package kvrocks
import (
"context"
"fmt"
"strconv"
"time"
"github.com/redis/go-redis/v9"
)
type KVRocksDB struct {
client *redis.Client
}
func NewKVRocksDB(conf redis.Options) *KVRocksDB {
client := redis.NewClient(&conf)
return &KVRocksDB{
client: client,
}
}
func (db *KVRocksDB) Ping() (err error) {
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
_, err = db.client.Ping(ctx).Result()
if err != nil {
return fmt.Errorf("can't connect kvrocks, %v", err)
}
return
}
func (db *KVRocksDB) DB() *redis.Client {
return db.client
}
func (db *KVRocksDB) GetI64(ctx context.Context, key string) (v int64, err error) {
v, err = db.DB().Get(ctx, key).Int64()
if err != nil {
if err == redis.Nil {
return 0, nil
}
return 0, err
}
return v, nil
}
// todo set async
func (db *KVRocksDB) SetI64(ctx context.Context, key string, v int64) (err error) {
vs := strconv.FormatInt(v, 10)
err = db.DB().Set(ctx, key, vs, 0).Err()
return
}