1, l'ETCD d'installation dans un environnement Mac
Utilisation de la commande: Brew installer ETCD, brasser un petit partenaire n'est pas installé, s'il vous plaît installer vous-même
2, démarrer le service
Entrez dans un terminal: ETCD, le message suivant apparaît le démarrage réussi
3, PUT, GET
import (
"context"
"encoding/xml"
"fmt"
"go.etcd.io/etcd/clientv3"
"time"
)
func main() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"localhost:2379", "localhost:22379", "localhost:32379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("connect failed, err:", err)
return
}
fmt.Println("connect succ")
defer cli.Close()
//设置1秒超时,访问etcd有超时控制
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
//操作etcd
_, err = cli.Put(ctx, "etcdTest", "sample_value")
//操作完毕,取消etcd
cancel()
if err != nil {
fmt.Println("put failed, err:", err)
return
}
//取值,设置超时为1秒
ctx, cancel = context.WithTimeout(context.Background(), time.Second)
resp, err := cli.Get(ctx, "etcdTest")
cancel()
if err != nil {
fmt.Println("get failed, err:", err)
return
}
fmt.Println("resp.Kvs:",resp.Kvs)
for _, ev := range resp.Kvs {
fmt.Printf("%s : %s\n", ev.Key, ev.Value)
}
return
}
Les résultats d'exploitation, la sortie de la console:
Connectez succ
resp.Kvs: [clé: "etcdTest" create_revision: 13 mod_revision: 13 Version: 1 Valeur: "sample_value"]
etcdTest: sample_value
4, WATCH
Le programme suivant aller construire, pour générer un fichier exécutable, en cours d'exécution dans le programme de terminal et une console, qui se terminera dans la sortie d'impression pour surveiller: résultat montre ......
import (
"context"
"encoding/xml"
"fmt"
"go.etcd.io/etcd/clientv3"
"time"
)
func main() {
cli, err := clientv3.New(clientv3.Config{
Endpoints: []string{"localhost:2379", "localhost:22379", "localhost:32379"},
DialTimeout: 5 * time.Second,
})
if err != nil {
fmt.Println("connect failed, err:", err)
return
}
fmt.Println("connect succ")
defer cli.Close()
cli.Put(context.Background(), "/etcdTest", "8888888")
for {
// watch key 监听节点
rch := cli.Watch(context.Background(), "/etcdTest")
for wresp := range rch {
for _, ev := range wresp.Events {
fmt.Printf("watch result:%s %q : %q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)
}
}
}
}