client.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package etcd_client
  2. import (
  3. "context"
  4. "go.etcd.io/etcd/clientv3"
  5. "time"
  6. )
  7. var client *clientv3.Client
  8. func NewEtcdClient(endpoints []string) error {
  9. var err error
  10. config := clientv3.Config{
  11. Endpoints: endpoints,
  12. //Endpoints: []string{"47.106.183.209:31379"},
  13. //Endpoints: []string{"10.43.152.46:2379"},
  14. DialTimeout: 5 * time.Second,
  15. }
  16. if client, err = clientv3.New(config); err != nil {
  17. return err
  18. }
  19. return nil
  20. }
  21. func Get(key string) (string, error) {
  22. resp, err := client.Get(context.TODO(), key)
  23. if err != nil {
  24. return "", err
  25. }
  26. if resp.Count == 0 {
  27. return "", nil
  28. }
  29. return string(resp.Kvs[0].Value), nil
  30. }
  31. func GetWithPrefix(key string) (map[string]string, error) {
  32. result := make(map[string]string, 0)
  33. resp, err := client.Get(context.TODO(), key, clientv3.WithPrefix())
  34. if err != nil {
  35. return result, err
  36. }
  37. for i := int64(0); i < resp.Count; i++ {
  38. result[string(resp.Kvs[i].Key)] = string(resp.Kvs[i].Value)
  39. }
  40. return result, nil
  41. }
  42. func Put(key, val string) error {
  43. _, err := client.Put(context.TODO(), key, val)
  44. return err
  45. }
  46. func Delete(key string) error {
  47. _, err := client.Delete(context.TODO(), key)
  48. return err
  49. }
  50. func DeleteWithPrefix(key string) error {
  51. _, err := client.Delete(context.TODO(), key, clientv3.WithPrefix())
  52. return err
  53. }