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 }