etcd中l(wèi)ease(租約)的使用(類比redis中的expire但是遠比expire強大)

少比比直接代碼(你可以理解為給key設置過期時間,但是比redis要強大的是它可以自動續(xù)租)

package main

import (
    "context"
    "fmt"
    "go.etcd.io/etcd/clientv3"
    "go.etcd.io/etcd/mvcc/mvccpb"
    "time"
)

func main() {
var (
        config clientv3.Config
        client *clientv3.Client
        err error
        kv clientv3.KV
        keepResp *clientv3.LeaseKeepAliveResponse
        keepRespChan <-chan *clientv3.LeaseKeepAliveResponse
    )
        //創(chuàng)建租約
    lease := clientv3.NewLease(client)
        //判斷是否有問題
        if leaseRes,err := lease.Grant(context.TODO(),10);err != nil {
        fmt.Println(err)
        return
    } else {
                //得到租約id
        leaseId := leaseRes.ID

        //定義一個上下文使得租約5秒過期
        ctx,_:= context.WithTimeout(context.TODO(),5*time.Second)

        //自動續(xù)租(底層會每次講租約信息扔到 <-chan *clientv3.LeaseKeepAliveResponse 這個管道中)
        if keepRespChan,err = lease.KeepAlive(ctx,leaseId);err != nil {
            fmt.Println(err)
            return
        }
                //啟動一個新的協(xié)程來select這個管道
        go func() {
            for {
                select {
                case keepResp = <- keepRespChan:
                    if keepResp == nil {
                        fmt.Println("租約失效了")
                        goto END//失效跳出循環(huán)
                    } else {
                                              //每秒收到一次應答
                        fmt.Println("收到租約應答",keepResp.ID)
                    }

                }
            }
            END:
        }()
                //得到操作鍵值對的kv
        kv = clientv3.NewKV(client)
                //進行寫操作
        if putResp,err = kv.Put(context.TODO(),"/cron/lock/job1","",clientv3.WithLease(leaseId)/*高速etcd這個key對應的租約*/);err != nil {
            fmt.Println(err)
            return
        } else {
            fmt.Println("寫入成功",putResp.Header.Revision/*這東西你可以理解為每次操作的id*/)
        }
    }
        //監(jiān)聽這個key的租約是否過期
    for {
        if getResp,err = kv.Get(context.TODO(),"/cron/lock/job1");err != nil {
            fmt.Println(err)
            return
        }

        if getResp.Count == 0 {
            fmt.Println("kv過期了")
            break
        }

        fmt.Println("kv沒過期",getResp.Kvs)
        time.Sleep(2 * time.Second)


}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黍衙,一起剝皮案震驚了整個濱河市泥畅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌琅翻,老刑警劉巖位仁,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異方椎,居然都是意外死亡聂抢,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門棠众,熙熙樓的掌柜王于貴愁眉苦臉地迎上來琳疏,“玉大人,你說我怎么就攤上這事摄欲〗瘟粒” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵胸墙,是天一觀的道長我注。 經(jīng)常有香客問我,道長迟隅,這世上最難降的妖魔是什么但骨? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮智袭,結(jié)果婚禮上奔缠,老公的妹妹穿的比我還像新娘。我一直安慰自己吼野,他們只是感情好校哎,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般闷哆。 火紅的嫁衣襯著肌膚如雪腰奋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天抱怔,我揣著相機與錄音劣坊,去河邊找鬼。 笑死屈留,一個胖子當著我的面吹牛局冰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播灌危,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼康二,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了勇蝙?” 一聲冷哼從身側(cè)響起赠摇,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浅蚪,沒想到半個月后藕帜,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡惜傲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年洽故,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盗誊。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡时甚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哈踱,到底是詐尸還是另有隱情荒适,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布开镣,位于F島的核電站刀诬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏邪财。R本人自食惡果不足惜陕壹,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望树埠。 院中可真熱鬧糠馆,春花似錦、人聲如沸怎憋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至毕匀,卻和暖如春耽装,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背期揪。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留规个,地道東北人凤薛。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像诞仓,于是被迫代替她去往敵國和親缤苫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 超強墅拭、超詳細Redis入門教程 轉(zhuǎn)載2017年03月04日 16:20:02 16916 轉(zhuǎn)載自: http://...
    邵云濤閱讀 17,434評論 3 313
  • 本文是我自己在秋招復習時的讀書筆記活玲,整理的知識點,也是為了防止忘記谍婉,尊重勞動成果舒憾,轉(zhuǎn)載注明出處哦!如果你也喜歡穗熬,那...
    波波波先森閱讀 3,424評論 0 40
  • 文章已經(jīng)放到github上 镀迂,如果對您有幫助 請給個star[https://github.com/qqxuanl...
    尼爾君閱讀 2,284評論 0 22
  • 【本教程目錄】 1.redis是什么2.redis的作者3.誰在使用redis4.學會安裝redis5.學會啟動r...
    徐猿猿閱讀 1,865評論 0 35
  • 1.感謝新來的小伙伴,為我分擔一些事務性工作唤蔗,這些天忙探遵,也沒好好教他,謝謝他的主動與理解 2.感謝哥哥妓柜,還有哥哥師...
    小窗幽記_hj閱讀 161評論 0 0