var wg sync.waitgroup
func subscribe (
)defer conn.
close()
//例項化乙個redigo中的pubsubconn結構體
c := redis.pubsubconn
//訂閱乙個頻道
err = c.
subscribe
("channel1"
)if err !=
nil//接收redis伺服器返回的資料
//迴圈接收
for的型別,所以需要斷言
switch v := c.
receive()
.(type
)case redis.message :
fmt.
printf
("channel:%s,\tdata:%s\n"
,v.channel,
string
(v.data)
)//訂閱或者取消訂閱
case redis.subscription:
fmt.
printf
("channel:%s\tcount:%d \tkind:%s\n"
,n.channel,n.count,n.kind)}}
}func
main()
defer conn.
close()
//起乙個協程
wg.add(1)
gosubscribe()
conn.do(
"publish"
,"channel1"
,"hello"
) wg.
wait()
}
redis.message結構體:
channel:發起頻道
data:資料,byte型別
pattern:匹配模式(如果有)
redis.subscription結構體:
kind:種類,共有 「subscribe」, 「unsubscribe」, 「psubscribe」 or 「punsubscribe」
channel:頻道
count:訂閱數量
注意:不能呼叫subscribe()裡面的conn進行發布資訊,需要另起乙個conn來進行發布。
GO連線Redis資料庫,使用redigo
golang語言版本1.14.4 安裝redigo庫go get v github.com gomodule redigo redis如果需要go redis庫的小夥伴,可以看看我這篇文章 golang連線redis資料庫 裡面涉及到如何使用go redis和一些使用redis時的幾個小技巧連線使用...
redis實現簡單佇列
在工作中,時常會有用到佇列的場景,比較常見的用rabbitmq這些專業的元件,官網位址是 重要的是官方有.net的客戶端,但是如果對rabbitmq不熟悉的話,建議使用第三方封裝好的 easynetq,rabbitmq比oqiwxfz較適合對安全性,穩定性要求較高的地方,但有時我們也會有對這方面要求...
redis佇列 生產消費模式 簡單實現
生產消費,不外乎就是生產新的訊息插入到佇列尾巴,消費者從佇列頭部取訊息。基於此,簡單實現如下 還有一種稍微複雜的實現,是結合了spring的實現,複雜實現 往列表尾部插入資料 param key param value public static void rpush string key,stri...