安装
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")
}
正文完