您现在的位置是:网站首页> 编程资料编程资料
golang对etcd存取和数值监测的实现_Golang_
2023-05-26
491人已围观
简介 golang对etcd存取和数值监测的实现_Golang_
测试代码如下
package main import ( "fmt" "log" "time" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 2 * time.Second endpoints = []string{"192.168.99.106:2379", "192.168.99.107:2379", "192.168.99.108:2379"} ) func main() { cli, err := clientv3.New(clientv3.Config{ Endpoints: endpoints, DialTimeout: dialTimeout, }) if err != nil { log.Fatal(err) } defer cli.Close() key1, value1 := "testkey1", "value" ctx, cancel := context.WithTimeout(context.Background(), requestTimeout) _, err = cli.Put(ctx, key1, value1) cancel() if err != nil { log.Println("Put failed. ", err) } else { log.Printf("Put {%s:%s} succeed\n", key1, value1) } ctx, cancel = context.WithTimeout(context.Background(), requestTimeout) resp, err := cli.Get(ctx, key1) cancel() if err != nil { log.Println("Get failed. ", err) return } for _, kv := range resp.Kvs { log.Printf("Get {%s:%s} \n", kv.Key, kv.Value) } done := make(chan bool) go func() { wch := cli.Watch(context.Background(), key1) for item := range wch { for _, ev := range item.Events { log.Printf("Type:%s, key:%s, value:%s\n", ev.Type, ev.Kv.Key, ev.Kv.Value) } } }() go func() { for cnt := 0; cnt < 11; cnt++ { value := fmt.Sprintf("%s%d", "value", cnt) _, err = cli.Put(context.Background(), key1, value) if err != nil { log.Println("Put failed. ", err) } else { log.Printf("Put {%s:%s} succeed\n", key1, value) } } }() <-done log.Println("Done!") } 测试结果如下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- 详解Go-JWT-RESTful身份认证教程_Golang_
- 使用Golang的Context管理上下文的方法_Golang_
- C语言的10大基础算法_Golang_
- golang websocket 服务端的实现_Golang_
- 解决vscode中golang插件依赖安装失败问题_Golang_
- Golang中runtime的使用详解_Golang_
- golang日志框架之logrus的使用_Golang_
- golang json.Marshal 特殊html字符被转义的解决方法_Golang_
- Go 结构体、数组、字典和 json 字符串的相互转换方法_Golang_
- golang抓取网页并分析页面包含的链接方法_Golang_
