【发布时间】:2021-10-20 16:29:12
【问题描述】:
我正在尝试在 Go 中使用 Redis PubSub 来传递/发布消息并在订阅期间检索它。
我已经能够正确设置代码的发布和订阅/PubSub 部分。下面是我的代码。我希望在订阅期间检索的(字符串)消息是 test message. 但是,我的代码输出给出了频道、种类和计数,并且没有显示预期的消息 (test message)。
在 Go 中使用 Redis 发布 / 订阅 Publish 后如何获得预期的消息(test message)? 我觉得我很接近,但我可能在这里遗漏了一个小东西。我对 Redis 很陌生。感谢您的帮助。
以下是我的代码:
package main
import (
"fmt"
"log"
"time"
"github.com/gomodule/redigo/redis"
)
func main() {
fmt.Println("Start redis test.")
c, err := redis.Dial("tcp", "localhost:6379")
if err != nil {
log.Println(err)
} else {
log.Println("No error during redis.Dial.")
}
// defer c.Close()
/// Publisher.
c.Do("PUBLISH", "example", "test message")
/// End here
/// Subscriber.
psc := redis.PubSubConn{Conn: c}
psc.Subscribe("example")
for {
switch v := psc.Receive().(type) {
case redis.Message:
fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
case redis.Subscription:
fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
case error:
fmt.Println(v)
}
}
/// End here
}
以下是我的输出:
example: subscribe 1
【问题讨论】:
标签: go redis publish-subscribe redigo