package etcd_client import ( "context" "go.etcd.io/etcd/clientv3" "time" ) var client *clientv3.Client func NewEtcdClient(endpoints []string) error { var err error config := clientv3.Config{ Endpoints: endpoints, //Endpoints: []string{"47.106.183.209:31379"}, //Endpoints: []string{"10.43.152.46:2379"}, DialTimeout: 5 * time.Second, } if client, err = clientv3.New(config); err != nil { return err } return nil } func Get(key string) (string, error) { resp, err := client.Get(context.TODO(), key) if err != nil { return "", err } if resp.Count == 0 { return "", nil } return string(resp.Kvs[0].Value), nil } func GetWithPrefix(key string) (map[string]string, error) { result := make(map[string]string, 0) resp, err := client.Get(context.TODO(), key, clientv3.WithPrefix()) if err != nil { return result, err } for i := int64(0); i < resp.Count; i++ { result[string(resp.Kvs[i].Key)] = string(resp.Kvs[i].Value) } return result, nil } func Put(key, val string) error { _, err := client.Put(context.TODO(), key, val) return err } func Delete(key string) error { _, err := client.Delete(context.TODO(), key) return err } func DeleteWithPrefix(key string) error { _, err := client.Delete(context.TODO(), key, clientv3.WithPrefix()) return err }