我是靠谱客的博主 无私小蝴蝶,这篇文章主要介绍etcd goland 客户端操作demo,put、get、del & lease相关,现在分享给大家,希望可以做个参考。

首先要下载依赖

复制代码
1
2
go get -u go.etcd.io/etcd/client/v3

相关操作demo如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
package main import ( "fmt" clientv3 "go.etcd.io/etcd/client/v3" "golang.org/x/net/context" "sync" "time" ) var wg sync.WaitGroup func main() { // 创建连接 cli, err := clientv3.New(clientv3.Config{ Endpoints: []string{"47.108.93.159:2379"}, DialTimeout: 5 * time.Second, }) if err != nil { return } defer func(client *clientv3.Client) { _ = client.Close() }(cli) // 监听 ch := make(chan int) // 同步监听的创建 go func(ch chan int) { watchChan := cli.Watch(context.TODO(), "/message") ch <- 1 for res := range watchChan { for _, event := range res.Events { fmt.Printf("-WATCH- Type: %s , Key: %s , Value: %s n", event.Type, event.Kv.Key, event.Kv.Value) } } }(ch) <-ch // 写 _, err = cli.Put(context.TODO(), "/message", "Hello") if err != nil { return } // 读 get, err := cli.Get(context.TODO(), "/", clientv3.WithPrefix()) // 查看以key为前缀的 if err != nil { return } for _, kv := range get.Kvs { fmt.Printf("-GET- %s : %s n", kv.Key, kv.Value) } // 删除 _, err = cli.Delete(context.TODO(), "/message") if err != nil { return } // 租约 fmt.Println("=================================") // 注册,ttl指的是最少多久过期,不是实际值 lease, err := cli.Grant(context.TODO(), 1) if err != nil { return } // 续约 _, err = cli.KeepAlive(context.TODO(), lease.ID) if err != nil { return } // 使用携带租约的 KV _, err = cli.Put(context.TODO(), "lease_test1", "hi", clientv3.WithLease(lease.ID)) if err != nil { return } // 查看 fmt.Println("解除前:") leaseRes, err := cli.Get(context.TODO(), "lease_test1") if err != nil { return } for _, kv := range leaseRes.Kvs { fmt.Printf("lease:%v,key:%s,v:%sn", kv.Lease, kv.Key, kv.Value) } // 查看使用了多久,哪些key使用了该租约 fmt.Println("哪些key使用了该租约:") live, err := cli.TimeToLive(context.TODO(), lease.ID, clientv3.WithAttachedKeys()) if err != nil { return } fmt.Println(live.GrantedTTL) fmt.Println(live.TTL) for _, key := range live.Keys { fmt.Println("key:", string(key)) } // 解除 _, err = cli.Revoke(context.TODO(), lease.ID) if err != nil { return } // 过期后再查看 fmt.Println("解除后:") leaseRes, err = cli.Get(context.TODO(), "lease_test1") if err != nil { return } for _, kv := range leaseRes.Kvs { fmt.Printf("lease:%v,key:%s,v:%sn", kv.Lease, kv.Key, kv.Value) } time.Sleep(time.Second) }

最后

以上就是无私小蝴蝶最近收集整理的关于etcd goland 客户端操作demo,put、get、del & lease相关的全部内容,更多相关etcd内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部