go-redis 發(fā)布/訂閱
最近golang 的項(xiàng)目開始使用redis 對(duì)于redis 真的是接觸少冗栗,而且是golang版本的 只能是看著文檔一點(diǎn)一點(diǎn)的入手了
連接初始化
RedisClient = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
發(fā)布
//參數(shù)1 頻道名 字符串類型
//參數(shù)2 發(fā)送的內(nèi)容 他是個(gè) interface{} 類型 因?yàn)槲乙颓岸藢?duì)接 所以data是我轉(zhuǎn)的json字符
err := RedisClient.Publish("message", data).Err()
if err != nil {
return errors.New("發(fā)布失敗")
}
訂閱
func Subscribe(){
//參數(shù)1 頻道名 字符串類型
pubsub := redis.Redis.Subscribe("homework")
_, err := pubsub.Receive()
if err != nil {
return
}
ch := pubsub.Channel()
for msg := range ch {
fmt.Println( msg.Channel, msg.Payload, "\r\n")
}
}
這里的訂閱了頻道,阻塞了代碼繼續(xù)執(zhí)行,所以我們 需要 go Subscribe() 來(lái)讓我們的程序 繼續(xù)執(zhí)行 并且go Subscribe() 寫在init方法內(nèi) 服務(wù)啟動(dòng)只執(zhí)行一次