golang对etcd的简单操作

栏目: Go · 发布时间: 5年前

内容简介:首先获取clientv3:连接etcd:kv是一个用于操作kv的连接,其实它本质上是用了client的conn,为了更加专注于键值对的操作,关闭client后也会使kv无法用。(kv的操作client也能实现)

首先获取clientv3:

go get go.etcd.io/etcd/clientv3

连接etcd:

config := clientv3.Config{
    Endpoints:[]string{"192.168.50.250:2379","172.16.196.129:2379"},  
    DialTimeout:10*time.Second,  
}
client,err := clientv3.New(config)
if err != nil {
    panic(err)
}
defer client.Close()
kv := clientv3.NewKV(client)

kv是一个用于操作kv的连接,其实它本质上是用了client的conn,为了更加专注于键值对的操作,关闭client后也会使kv无法用。(kv的操作client也能实现)

设置一个超时的context:

ctx,cancleFunc:= context.WithTimeout(context.TODO(),5*time.Second)

context.WithTimeout()会返回一个timerCtx{},并在这个结构体里注入了超时时间。cancleFunc是一个取消操作的函数。put,get等操作是阻塞型操作,context里有一个用于管理超时的select,当时间一到就会隐式执行cancelFunc,使操作停止并返回错误。如果显式的调用cancelFunc()则会立即停止操作,返回错误。

put操作:

putResp,err := kv.Put(ctx,"/job/v3","push the box",clientv3.WithPrevKV())  //withPrevKV()是为了获取操作前已经有的key-value
if err != nil{
        panic(err)
    }
fmt.Printf("%v",putResp.PrevKv)
getResp,err := kv.Get(ctx,"/job/",clientv3.WithPrefix()) //withPrefix()是未了获取该key为前缀的所有key-value
if err != nil{
    panic(err)
}
fmt.Printf("%v",getResp.Kvs)

由于etcd是有序存储键值对的,还可以附加clientv3.WithFromKey(),clientv3.WithLimit()来实现分页获取的效果。

监听etcd集群键的改变:

wc := client.Watch(context.Background(), "/job/", clientv3.WithPrefix(),clientv3.WithPrevKV())
    for v := range wc {
        if v.Err() != nil {
            panic(err)
        }
        for _, e := range v.Events {
            fmt.Printf("type:%v\n kv:%v  prevKey:%v  ", e.Type, e.Kv, e.PrevKv)
        }
    }

以上所述就是小编给大家介绍的《golang对etcd的简单操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法分析导论

算法分析导论

(美)Robert Sedgewick、(法)Philippe Flajolet / 冯舜玺、李学武、裴伟东、等其他 / 机械工业出版社 / 2006-4 / 38.00元

本书阐述了用于算法数学分析的主要方法,所涉及的材料来自经典数学课题,包括离散数学、初等实分析、组合数学,以及来自经典的计算机科学课题,包括算法和数据结构,本书内容集中覆盖基础、重要和有趣的算法,前面侧重数学,后面集中讨论算法分析的应用,重点的算法分的的数学方法。每章包含大量习题以及参考文献,使读者可以更深入地理解书中的内容。 本书适合作为高等院校数学、计算机科学以及相关专业的本科生和研究生的......一起来看看 《算法分析导论》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

html转js在线工具
html转js在线工具

html转js在线工具