TiKV Go Client provides support for interacting with the TiKV server in the form of a Go library.
There are 2 major versions of the client-go package.
v2is the latest stable version. This version was extracted from pingcap/tidb and it includes new TiKV features like Follower Read, 1PC, Async Commit. The development of this version is on themasterbranch. The documentation for this version is below.v1is the previous stable version and is only maintained for bug fixes. You can read the documentation here.
# valid versions be like @latest, @e5f932ae270887550b0cd221343dbd6b870b6c8f, @v2.0.0, @v2.0.1... go get github.com/tikv/client-go/v2@COMMIT_HASH_OR_TAG_VERSIONExplanation of related concepts and sample code can be found in the Client-Go Wiki. There are also executable examples in examples directory.
Pull Requests and issues are welcomed. Please check CONTRIBUTING.md.
Note: All the following tests are included in the CI and you can submit a Pull Request directly to hand over the work.
To run unit tests, use following command
go test ./...To run code linter, make sure golangci-lint is installed. Then use following command
golangci-lint runintegration_tests can run against a real TiKV cluster. Here is an example:
./pd-server & sleep 5 ./tikv-server & sleep 10 cd integration_tests go test --with-tikvIt is a common task to update client-go and then test it with TiDB.
If you only need to test locally, you can directly use the modified client-go on the same host by replacing:
go mod edit -replace=github.com/tikv/client-go/v2=/path/to/client-goIf you want to push your TiDB code to GitHub for running CI or for code review, you need to change the client-go used by TiDB to your developing branch using the following steps:
go get -d github.com/GITHUB_USERNAME/client-go/v2@DEV_BRANCH # Output:# go get: github.com/GITHUB_USERNAME/client-go/v2@none updating to# github.com/GITHUB_USERNAME/client-go/[email protected]: parsing go.mod:# module declares its path as: github.com/tikv/client-go/v2# but was required as: github.com/GITHUB_USERNAME/client-go/v2 go mod edit -replace=github.com/tikv/client-go/v2=github.com/GITHUB_USERNAME/client-go/[email protected] go mod download github.com/tikv/client-go/v2client-go is used by the following projects:
- TiDB: TiDB is an open source distributed HTAP database compatible with the MySQL protocol
- BR: A command-line tool for distributed backup and restoration of the TiDB cluster data
- TiCDC: Change data capture for TiDB
- go-ycsb: A Go port of Yahoo! Cloud Serving Benchmark (YCSB)
- JuiceFS: JuiceFS is a distributed POSIX file system built on top of Redis and S3