易云轻量版服务端
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

etcd_client.go 2.0 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package db
  2. import (
  3. "context"
  4. "errors"
  5. "go.etcd.io/etcd/clientv3"
  6. "locking-kit-server/consts"
  7. "log"
  8. "time"
  9. )
  10. /**
  11. * @author yuanrh
  12. * @description etcd数据库客户端
  13. * @date 2021/6/28 11:11
  14. **/
  15. /**
  16. 获取客户端连接
  17. */
  18. func GetClient() (*clientv3.Client,error){
  19. cli, err := clientv3.New(clientv3.Config{
  20. Endpoints: []string{consts.ETCD_URL},
  21. DialTimeout: 5 * time.Second,
  22. })
  23. if err != nil {
  24. // handle error!
  25. log.Printf("connect to etcd failed, err:%v\n", err)
  26. return nil,err
  27. }
  28. //log.Println("connect to etcd success")
  29. return cli,nil
  30. }
  31. /**
  32. 删除包含该前缀的所有Key
  33. */
  34. func DeleteWithPrefix(prefix string) error{
  35. if len(prefix)==0{
  36. return errors.New("参数prefix不能为空")
  37. }
  38. client,err := GetClient()
  39. if err!=nil{
  40. return err
  41. }
  42. defer client.Close()
  43. _, err = client.KV.Delete(context.Background(),prefix, clientv3.WithPrefix())
  44. if err!=nil{
  45. log.Println(err)
  46. return err
  47. }
  48. return err
  49. }
  50. /**
  51. 批量增加
  52. */
  53. func BatchAdd(dataMap map[string] string) error{
  54. if dataMap==nil || len(dataMap)==0{
  55. return errors.New("dataMap为空")
  56. }
  57. client,err := GetClient()
  58. if err!=nil{
  59. return err
  60. }
  61. defer client.Close()
  62. for k, v := range dataMap {
  63. _, err = client.KV.Put(context.Background(), k, v)
  64. if err!=nil{
  65. log.Println(err)
  66. return err
  67. }
  68. }
  69. return nil
  70. }
  71. /**
  72. 替换k,v
  73. */
  74. func ReplaceInto(k, v string) error{
  75. client,err := GetClient()
  76. if err!=nil{
  77. return err
  78. }
  79. defer client.Close()
  80. _,err =client.KV.Put(context.Background(), k, v)
  81. if err!=nil{
  82. log.Println(err)
  83. return err
  84. }
  85. return nil
  86. }
  87. /**
  88. 根据后缀查询
  89. */
  90. func QueryWithPrefix(prefix string) (map[string] string,error){
  91. client,err := GetClient()
  92. if err!=nil{
  93. log.Println(err)
  94. return nil,err
  95. }
  96. defer client.Close()
  97. resp,err :=client.KV.Get(context.Background(),prefix, clientv3.WithPrefix())
  98. if err!=nil{
  99. log.Println(err)
  100. return nil,err
  101. }
  102. var gobalFileMap = make(map[string] string)
  103. for _,v := range resp.Kvs{
  104. gobalFileMap[string(v.Key)]=string(v.Value)
  105. }
  106. return gobalFileMap,nil;
  107. }