我们这边有三个项目分别是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中:
在这里插入图片描述