50 lines
1.2 KiB
Markdown
50 lines
1.2 KiB
Markdown
# etcd/clientv3
|
|
|
|
[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/coreos/etcd/clientv3)
|
|
|
|
`etcd/clientv3` is the official Go etcd client for v3.
|
|
|
|
## Install
|
|
|
|
```bash
|
|
go get github.com/coreos/etcd/clientv3
|
|
```
|
|
|
|
## Get started
|
|
|
|
Create client using `clientv3.New`:
|
|
|
|
```go
|
|
cli, err := clientv3.New(clientv3.Config{
|
|
Endpoints: []string{"localhost:12378", "localhost:22378", "localhost:32378"},
|
|
DialTimeout: 5 * time.Second,
|
|
})
|
|
if err != nil {
|
|
// handle error!
|
|
}
|
|
defer cli.Close()
|
|
```
|
|
|
|
etcd v3 uses [`gRPC`](http://www.grpc.io) for remote procedure calls. And `clientv3` uses
|
|
[`grpc-go`](https://github.com/grpc/grpc-go) to connect to etcd. Make sure to close the client after using it.
|
|
If the client is not closed, the connection will have leaky goroutines. To specify client request timeout,
|
|
pass `context.WithTimeout` to APIs:
|
|
|
|
```go
|
|
ctx, cancel := context.WithTimeout(context.Background(), timeout)
|
|
resp, err := kvc.Put(ctx, "sample_key", "sample_value")
|
|
cancel()
|
|
if err != nil {
|
|
// handle error!
|
|
}
|
|
// use the response
|
|
```
|
|
|
|
## Error Handling
|
|
|
|
TODO
|
|
|
|
## Examples
|
|
|
|
More code examples can be found at [GoDoc](https://godoc.org/github.com/coreos/etcd/clientv3).
|