etcd是一个高可用的分布式键值存储系统,常用于服务发现、配置共享等场景。在Golang中,可以使用go-etcd/etcd包来进行对etcd的操作。
以下是一些常用的操作:
- 连接etcd服务器
import (
"context"
"github.com/coreos/etcd/clientv3"
)
// 创建etcd客户端
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"localhost:2379"}, // etcd服务器地址
DialTimeout: 5 * time.Second,
})
if err != nil {
log.Fatal(err)
}
defer cli.Close() // 关闭连接
- 写入数据
// 写入数据,key为“foo”,value为“bar”
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
_, err = cli.Put(ctx, "foo", "bar")
cancel()
if err != nil {
log.Fatal(err)
}
- 读取数据
// 读取数据,key为“foo”
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
resp, err := cli.Get(ctx, "foo")
cancel()
if err != nil {
log.Fatal(err)
}
for _, ev := range resp.Kvs {
fmt.Printf("%s : %s\n", ev.Key, ev.Value)
}
- 监听变化
// 监听前缀为“foo”的key变化
ctx, cancel := context.WithCancel(context.Background())
respChan := cli.Watch(ctx, "foo", clientv3.WithPrefix())
for resp := range respChan {
for _, ev := range resp.Events {
fmt.Printf("%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
}
}
以上是一些常用的操作,还有其他操作(如删除数据、事务处理等)可以参考etcd官方文档和go-etcd/etcd包的API文档。




