GO语言-etcd操作,get put watch

package main

import (
   "context"
   "fmt"
   "go.etcd.io/etcd/clientv3"
   "time"
)

func main() {
   cli, err := clientv3.New(clientv3.Config{
      Endpoints:   []string{"127.0.0.1:2379"},
      DialTimeout: 5 * time.Second,
   })
   if err != nil {
      fmt.Println("ETCD出错 :", err)
   }
   defer cli.Close()

   ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
   _, err = cli.Put(ctx, "test", "testvalue")
   if err != nil {
      fmt.Println("PUT出错:", err)
      return
   }
   fmt.Println("PUT成功")
   cancel()

   ctx, cancel = context.WithTimeout(context.Background(), 2*time.Second)
   get, err := cli.Get(ctx, "test")
   cancel()
   if err != nil {
      fmt.Println("GET出错:", err)
      return
   }
   for _, kv := range get.Kvs {
      fmt.Printf("key:%s\nvalue:%s\n\n", kv.Key, kv.Value)
   }

   res := cli.Watch(context.Background(), "test")
   for r := range res {
      for _, ev := range r.Events {
         fmt.Printf("type:%s\nkey:%s\nvalue:%s\n\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
      }
   }
}


最后编辑于:2021/12/23作者: 牛逼PHP

发表评论