从零开始学习etcd的使用

etcd做注册服务使用 类似java生态的zookeeper,最近在学学习

1、下载etcd包

//直接下载即可(因为包比较大有翻墙,可以直接去 https://golangtc.com/download/package 下载)
go get  go.etcd.io/etcd/clientv3

2、使用记录

packge main

import (
    "context"
    "fmt"
    "go.etcd.io/etcd/clientv3"
    //"log/syslog"
    "time"
)

func main() {
  var (
        config clientv3.Config
        client *clientv3.Client
        err error
        kv clientv3.KV
        putResp *clientv3.PutResponse
        getResp *clientv3.GetResponse
        delResp *clientv3.DeleteResponse
        keepResp *clientv3.LeaseKeepAliveResponse
        keepRespChan <-chan *clientv3.LeaseKeepAliveResponse
    )
}
//客户端配置
config = clientv3.Config{
    Endpoints:[]string{"127.0.0.1:2379"},
    DialTimeout:5 * time.Second,
}
    //建立连接
if client,err = clientv3.New(config);err != nil {
    fmt.Println(err)
    return
}
//得到操作etcd键值对的kv
kv = clientv3.NewKV(client)

//写入etcd
if putResp,err = kv.Put(context.TODO(),"/cron/jobs/job2","....",clientv3.WithPrevKV()/*可选参数,得到上次操作的值*/);err != nil {
    fmt.Println(err)
} else {
    fmt.Println(putResp.Header.Revision)

    if putResp.PrevKv != nil {
        fmt.Println(string(putResp.PrevKv.Value))
    }
}
//读取某个key的value值
getResp,err = kv.Get(context.TODO(),"/cron/jobs/job1"/*,clientv3.WithCountOnly()可选参数,得到数量*/)
    if err != nil {
        fmt.Println(err)
        return
    } else {
        fmt.Println(getResp.Kvs[0].Value/*得到的是一个切片*/)
    }
//读取前缀为XXX的所有的key的value(需要加上参数clientv3.WithPrefix())
if getResp,err = kv.Get(context.TODO(),"/cron/jobs/",clientv3.WithPrefix());err != nil {
        fmt.Println(err)
        return
    } else {
        fmt.Println(getResp.Kvs)
    }
//删除操作
if delResp,err = kv.Delete(context.TODO(),"/cron/jobs/job2",clientv3.WithPrevKV()/*得到删除之前的值*/);err != nil {
        fmt.Println(err)
        return
    } else {
        if len(delResp.PrevKvs) != 0 {
            fmt.Println(delResp.PrevKvs)
        }
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • from http://www.infoq.com/cn/articles/etcd-interpretation...
    小树苗苗阅读 14,145评论 3赞 38
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,236评论 19赞 139
  • 今天我非常快乐,因为因为奶奶来了。我听过一首歌叫爷爷奶奶的故事。我喜欢奶奶因为奶奶给我买笔买衣服。姥姥也来啦!我也...
    金落九天阅读 182评论 0赞 1
  • 我不害怕时光荏苒 也不害怕人尽黄昏 怕的是 坟旁没有你 而我 空欢喜
    北方女阅读 215评论 0赞 2
  • 最近在看一本教你写文案的书,书名叫“那些让文案绝望的文案”,为什么会买这本书呢?因为前段时间想出来找工作,在想做什...
    Rose酱阅读 194评论 0赞 0

友情链接更多精彩内容