Go操作etcd集群

460 次浏览次阅读
没有评论

安装

etcd/client/v3

go get go.etcd.io/etcd/client/v3
func main() {
    cli, err := clientv3.New(clientv3.Config{Endpoints:   []string{"http://127.0.0.1:30000", "http://127.0.0.1:30002", "http://127.0.0.1:30004"},
        DialTimeout: 5 * time.Second,
    })

    if err != nil {fmt.Printf("connect to etcd failed, err: %v\n", err)
        return
    }

    defer cli.Close()
    fmt.Println("connect to etcd success...")

    go listen(cli)

    put(cli)
    get(cli)
    update(cli)
    del(cli)
}

func put(cli *clientv3.Client) {ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    _, err := cli.Put(ctx, "name", "test")
    cancel()
    if err != nil {fmt.Printf("put to etcd failed, err:%v\n", err)
        return
    }
}

func get(cli *clientv3.Client) {ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    res, err := cli.Get(ctx, "name")
    cancel()
    if err != nil {fmt.Printf("get to etcd failed, err:%v\n", err)
        return
    }
    for _, v := range res.Kvs {fmt.Printf("type: %s key: %s value: %s\n", "GET", v.Key, v.Value)
    }
}

func update(cli *clientv3.Client) {ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
    _, err := cli.Put(ctx, "name", "test2")
    cancel()
    if err != nil {fmt.Printf("put to etcd failed, err:%v\n", err)
        return
    }
}

func del(cli *clientv3.Client) {ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
    _, err := cli.Delete(ctx, "name")
    cancel()
    if err != nil {fmt.Printf("delete from etcd failed, err:%v\n", err)
        return
    }
}

func listen(cli *clientv3.Client) {wat := cli.Watch(context.Background(), "name")
    for w := range wat {
        for _, v := range w.Events {fmt.Printf("type: %s key: %s value: %s", v.Type, v.Kv.Key, v.Kv.Value)
        }
    }
    fmt.Println("out")
}
正文完
 0
评论(没有评论)