github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/etcd/cluster/v2/main.go (about)

     1  package main
     2  
     3  import (
     4  	"context"
     5  	"go.etcd.io/etcd/client"
     6  	"log"
     7  	"time"
     8  )
     9  
    10  func main() {
    11  	cfg := client.Config{
    12  		Endpoints: []string{"http://192.168.1.151:2377"},
    13  		Transport: client.DefaultTransport,
    14  		// set timeout per request to fail fast when the target endpoint is unavailable
    15  		HeaderTimeoutPerRequest: time.Second,
    16  	}
    17  	c, err := client.New(cfg)
    18  	if err != nil {
    19  		log.Fatal(err)
    20  	}
    21  	kapi := client.NewKeysAPI(c)
    22  	// set "/foo" key with "bar" value
    23  	log.Print("Setting '/foo' key with 'bar' value")
    24  	resp, err := kapi.Set(context.Background(), "/foo", "bar", nil)
    25  	if err != nil {
    26  		log.Fatal(err)
    27  	} else {
    28  		// print common key info
    29  		log.Printf("Set is done. Metadata is %q\n", resp)
    30  	}
    31  	// get "/foo" key's value
    32  	log.Print("Getting '/foo' key value")
    33  	resp, err = kapi.Get(context.Background(), "/foo", nil)
    34  	if err != nil {
    35  		log.Fatal(err)
    36  	} else {
    37  		// print common key info
    38  		log.Printf("Get is done. Metadata is %q\n", resp)
    39  		// print value
    40  		log.Printf("%q key has %q value\n", resp.Node.Key, resp.Node.Value)
    41  	}
    42  }