Go整合Redis2.0發(fā)布訂閱的實(shí)現(xiàn)
更新時(shí)間:2026年01月28日 08:27:49 作者:尋找優(yōu)秀的自己
本文主要介紹了Go整合Redis2.0發(fā)布訂閱,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
Redis
goredis-cli --version redis-cli 5.0.14.1 (git:ec77f72d)
Go
go get github.com/go-redis/redis/v8
package redis
import (
"MyKindom-Server-v2.0/com/xzm/core/config/yaml"
"MyKindom-Server-v2.0/com/xzm/core/config/yaml/pojo"
"context"
"fmt"
"github.com/go-redis/redis/v8"
"time"
)
// RDB
var RDB *redis.Client
var globalConfig = yaml.GlobalConfig
// initRedis 初始化Redis連接
func initRedis(config pojo.RedisConfig) error {
RDB = redis.NewClient(&redis.Options{
Addr: config.Address,//Redis地址:localhost:6379
Password: config.Password,//密碼:123456
DB: config.DbIndex,//索引 :0
})
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 測試連接
if err := RDB.Ping(ctx).Err(); err != nil {
return fmt.Errorf("連接Redis失敗: %v", err)
}
return nil
}
func init() {
initRedis(globalConfig.Redis)
}
package main
import (
"context"
"fmt"
"MyKindom-Server-v2.0/com/xzm/core/dadabase/redis"
)
/**
* @Author: XuZhiMing
* @Date: 2024/7/18 17:04
* @Description: 測試redis發(fā)布訂閱
*/
func main() {
backgroundCtx := context.Background()
channelName := "new"
go subscribeChannel(backgroundCtx, channelName)
for {
var message string
fmt.Print("請輸入消息: ")
fmt.Scanln(&message)
err := publishMessage(backgroundCtx, channelName, message)
if err != nil {
fmt.Println("發(fā)布消息失敗:", err)
}
}
// 保持程序運(yùn)行,以便訂閱者可以接收到消息
select {}
}
// 訂閱指定頻道
func subscribeChannel(ctx context.Context, channel string) {
pubsub := redis.RDB.Subscribe(ctx, channel)
defer pubsub.Close()
fmt.Printf("已訂閱頻道 [%s]\n", channel)
// 監(jiān)聽消息
ch := pubsub.Channel()
for msg := range ch {
fmt.Printf("[收到] 頻道: %s | 內(nèi)容: %s\n", msg.Channel, msg.Payload)
}
}
// 發(fā)布消息到指定頻道
func publishMessage(ctx context.Context, channel, message string) error {
err := redis.RDB.Publish(ctx, channel, message).Err()
if err != nil {
return err
}
fmt.Printf("[發(fā)布] 頻道: %s | 內(nèi)容: %s\n", channel, message)
return nil
}
到此這篇關(guān)于Go整合Redis2.0發(fā)布訂閱的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Go Redis發(fā)布訂閱內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
搭建Go語言的ORM框架Gorm的具體步驟(從Java到go)
很多朋友不知道如何使用Goland軟件,搭建一個(gè)ORM框架GORM,今天小編給大家分享一篇教程關(guān)于搭建Go語言的ORM框架Gorm的具體步驟(從Java到go),感興趣的朋友跟隨小編一起學(xué)習(xí)下吧2022-09-09
golang 數(shù)組隨機(jī)排序的實(shí)現(xiàn)
本文主要介紹了golang 數(shù)組隨機(jī)排序的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Go語言JSON數(shù)據(jù)返回的實(shí)戰(zhàn)案例
本文介紹用Go標(biāo)準(zhǔn)庫構(gòu)建返回JSON的HTTP接口,包括GET請求處理、JSON編碼及響應(yīng)設(shè)置,為RESTful API開發(fā)打下基礎(chǔ),感興趣的可以了解一下2025-08-08
Mac GoLand打不開(閃退)也不報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Mac GoLand打不開(閃退)也不報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04
Golang實(shí)現(xiàn)四種負(fù)載均衡的算法(隨機(jī),輪詢等)
本文介紹了示例介紹了Golang 負(fù)載均衡的四種實(shí)現(xiàn),主要包括了隨機(jī),輪詢,加權(quán)輪詢負(fù)載,一致性hash,感興趣的小伙伴們可以參考一下2021-06-06

