我们这边有三个项目分别是redis1、redis2、redis3;redis1用来发送消息,redis2和redis3用来接收消息
redis1的代码:
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
func main() {
//连接redis数据库
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
_, err := rdb.Ping(ctx).Result()
if err != nil {
fmt.Println("redis数据库连接失败")
} else {
fmt.Println("redis数据库连接成功...")
}
//发布消息
rdb.Publish(ctx, "ch3", "我是ch3的数据...")
rdb.Publish(ctx, "ch4", "我是ch4的数据...")
}
redis2的代码:
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
func main() {
//连接redis数据库
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
_, err := rdb.Ping(ctx).Result()
if err != nil {
fmt.Println("redis数据库连接失败")
} else {
fmt.Println("redis数据库连接成功...")
}
//订阅消息
pubsub := rdb.Subscribe(ctx, "ch3")
ch := pubsub.Channel()
for msg := range ch {
fmt.Println(msg.Channel, msg.Payload)
}
}
redis3的代码:
package main
import (
"context"
"fmt"
"github.com/go-redis/redis/v8"
)
var ctx = context.Background()
func main() {
//连接redis数据库
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
_, err := rdb.Ping(ctx).Result()
if err != nil {
fmt.Println("redis数据库连接失败")
} else {
fmt.Println("redis数据库连接成功...")
}
//订阅消息
pubsub := rdb.Subscribe(ctx, "ch4")
ch := pubsub.Channel()
for msg := range ch {
fmt.Println(msg.Channel, msg.Payload)
}
}
freshgo run main.go
效果如下:
redis1中:
redis2中:
redis3中: