在 Go 语言中操作 Redis 的发布订阅功能,可以使用第三方库 go-redis。以下是一个简单的示例:
package main
import (
"fmt"
"github.com/go-redis/redis"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
pubsub := client.Subscribe("mychannel")
defer pubsub.Close()
// 订阅消息
msg, err := pubsub.ReceiveMessage()
if err != nil {
panic(err)
}
fmt.Println(msg.Channel, msg.Payload)
// 发布消息
err = client.Publish("mychannel", "hello world").Err()
if err != nil {
panic(err)
}
}
在上面的代码中,我们首先创建了一个 Redis 客户端,并通过 Subscribe()
方法订阅了名为 “mychannel” 的频道。接着通过 ReceiveMessage()
方法获取到该频道的第一条消息并打印出来。
最后,我们又通过 Publish()
方法向 “mychannel” 频道发布了一条消息。
需要注意的是,在实际生产环境中,可能会有多个客户端同时订阅同一个频道,这时候需要为每个客户端创建一个独立的 PubSub 对象。此外,在使用完 PubSub 对象之后也应该及时关闭它以释放资源。