Go-Redis消息的订阅与发布

本篇了解Redis的消息订阅,以及用Go实现消息订阅功能。

Redis订阅

  • 订阅频道
[root@iZwz9d74mj3se01z97vymxZ ~]# redis-cli -p 6379
127.0.0.1:6379> SUBSCRIBE chatroom
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chatroom"
3) (integer) 1
  • 发布订阅
[root@iZwz9d74mj3se01z97vymxZ ~]# redis-cli -p 6379
127.0.0.1:6379> PUBLISH chatroom 'hello' // 向‘chatroom’频道中推送‘hello’消息
(integer) 1
  • 收到订阅
[root@iZwz9d74mj3se01z97vymxZ ~]# redis-cli -p 6379
127.0.0.1:6379> SUBSCRIBE chatroom // 订阅‘chatroom’频道
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "chatroom"
3) (integer) 1
1) "message"
2) "chatroom"
3) "hello" // 收到来自‘chatroom’频道的‘hello’消息

由上三步命令行可见Redis消息订阅(读者)、发布订阅消息(博主)和接收订阅消息(读者)是如此便捷。下面我们使用go语言集成redis环境模拟上述实验。

Go集成Redis

Go集成Redis使用的是go-redis模块。模块开源包源码地址:https://Github.com/go-redis/redis。模块官网:https://redis.uptrace.dev/

  • goland新建项目

  • go mod init go-chat。

  • go mod tidy。

直接上代码:

package main

import (
 "context"
 "fmt"
 "github.com/go-redis/redis/v8"
)

var ctx = context.Background()

// 建立Redis连接
var rdb = redis.NewClient(&redis.Options{
 Addr:     "17.0.0.1:6379",
 Password: ""// no password set
 DB:       0,  // use default DB
})

func main(){
 fmt.Println("################")
 fmt.Println("#####Hi!########")
 fmt.Println("################")

 // 订阅bin这个channel
 sub := rdb.Subscribe(ctx, "bin")

    // 本地redis客户端命令行模拟发布订阅消息
    
 // sub.Channel() 返回go channel,可以循环读取redis服务器发过来的消息
 for msg := range sub.Channel() {
  // 打印收到的消息
  fmt.Println("当前消息由", msg.Channel, "信道发送:", msg.Payload)
 }

}

效果展示

Go-Redis消息的订阅与发布

上图可见在本地Redis端发送的订阅在程序端成功接收。

代码打包

修改连接为服务器端连接(修改地址和暴露端口)。执行go build main.go进行windows下打包,执行打包的exe文件。远程redis端发布频道消息,验证效果:

Go-Redis消息的订阅与发布

至此redis订阅功能完成,利用Go语言打包成可执行文件,本地运行。如果这里双向都加上订阅和发布订阅逻辑那会是个什么效果呢?

资源链接

  • redis官网在线教程:https://try.redis.io/

  • redis官网命令指南:https://redis.io/commands

  • go-redis模块开源地址:https://github.com/go-redis/redis

  • go-redis官网:https://redis.uptrace.dev/

📢📢📢欢迎大家在公众号后台留言交流学习!!!📢📢📢


原文始发于微信公众号(fairy with you):Go-Redis消息的订阅与发布

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/29667.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!