tikv的go client

hi,一共有三个问题
1.tikv暂时是没有完整的c client吗?

  1. 如果采用go client ,这个client是需要编译出来吗?不太擅长go 。

  2. 今天在编译go client的测试代码时,两个节点,其中一个节点可以正常编译,另一个节点出现了
    go: finding module for package github.com/pingcap/pd/pd-client
    …/go/pkg/mod/github.com/pingcap/tidb@v2.0.11+incompatible/store/tikv/kv.go:28:2: module github.com/pingcap/pd@latest found (v2.1.19+incompatible), but does not contain package github.com/pingcap/pd/pd-client
    这个问题,两个节点的go env除了文件夹名称之外没有什么差别,不清楚为什么会出现此类问题

您好,Go client 是目前最稳定的客户端,使用方法可以参考 https://github.com/andylokandy/how-to-use-tikv-client-go , Cpp client 是最近才开始开发的,可能不稳定和有bug,可以用来测试 https://github.com/tikv/client-cpp

第三个问题就是go client出现的,这个怎么解决呢

可以参考这个 issue 看是不是这个问题。如果不能解决的话,可以提供一下测试的代码。

是这个问题,但是问题并没有解决,测试代码就是rawkv的例子

package main

import (
    "fmt"
    "github.com/pingcap/tidb/config"
    "github.com/pingcap/tidb/store/tikv"
)

func main() {
    cli, err := tikv.NewRawKVClient([]string{"192.168.244.129:2379"}, config.Security{})
    if err != nil {
        panic(err)
    }
    defer cli.Close()

    fmt.Printf("cluster ID: %d\n", cli.ClusterID())

    key := []byte("Company")
    val := []byte("PingCAP")

    // put key into tikv
    err = cli.Put(key, val)
    if err != nil {
        panic(err)
    }
    fmt.Printf("Successfully put %s:%s to tikv\n", key, val)

    // get key from tikv
    val, err = cli.Get(key)
    if err != nil {
        panic(err)
    }
    fmt.Printf("found val: %s for key: %s\n", val, key)

    // delete key from tikv
    err = cli.Delete(key)
    if err != nil {
        panic(err)
    }
    fmt.Printf("key: %s deleted\n", key)

    // get key again from tikv
    val, err = cli.Get(key)
    if err != nil {
        panic(err)
    }
    fmt.Printf("found val: %s for key: %s\n", val, key)
}

那再试试这里的: