|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- package db
-
- import (
- "context"
- "errors"
- "go.etcd.io/etcd/clientv3"
- "locking-kit-server/consts"
- "log"
- "time"
- )
-
- /**
- * @author yuanrh
- * @description etcd数据库客户端
- * @date 2021/6/28 11:11
- **/
-
-
- /**
- 获取客户端连接
- */
- func GetClient() (*clientv3.Client,error){
-
- cli, err := clientv3.New(clientv3.Config{
- Endpoints: []string{consts.ETCD_URL},
- DialTimeout: 5 * time.Second,
- })
- if err != nil {
- // handle error!
- log.Printf("connect to etcd failed, err:%v\n", err)
- return nil,err
- }
-
- //log.Println("connect to etcd success")
- return cli,nil
- }
-
- /**
- 删除包含该前缀的所有Key
- */
- func DeleteWithPrefix(prefix string) error{
-
- if len(prefix)==0{
- return errors.New("参数prefix不能为空")
- }
-
- client,err := GetClient()
- if err!=nil{
- return err
- }
- defer client.Close()
-
- _, err = client.KV.Delete(context.Background(),prefix, clientv3.WithPrefix())
- if err!=nil{
- log.Println(err)
- return err
- }
-
- return err
- }
-
- /**
- 批量增加
- */
- func BatchAdd(dataMap map[string] string) error{
-
- if dataMap==nil || len(dataMap)==0{
- return errors.New("dataMap为空")
- }
-
- client,err := GetClient()
- if err!=nil{
- return err
- }
- defer client.Close()
-
- for k, v := range dataMap {
-
- _, err = client.KV.Put(context.Background(), k, v)
-
- if err!=nil{
- log.Println(err)
- return err
- }
- }
-
- return nil
- }
-
- /**
- 替换k,v
- */
- func ReplaceInto(k, v string) error{
-
- client,err := GetClient()
- if err!=nil{
- return err
- }
- defer client.Close()
-
- _,err =client.KV.Put(context.Background(), k, v)
- if err!=nil{
- log.Println(err)
- return err
- }
-
- return nil
- }
-
- /**
- 根据后缀查询
- */
- func QueryWithPrefix(prefix string) (map[string] string,error){
- client,err := GetClient()
- if err!=nil{
- log.Println(err)
- return nil,err
- }
- defer client.Close()
-
- resp,err :=client.KV.Get(context.Background(),prefix, clientv3.WithPrefix())
- if err!=nil{
- log.Println(err)
- return nil,err
- }
- var gobalFileMap = make(map[string] string)
- for _,v := range resp.Kvs{
- gobalFileMap[string(v.Key)]=string(v.Value)
- }
- return gobalFileMap,nil;
- }
-
|