在golang中测试订阅发布功能

我们这边有三个项目分别是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)
	}

}

测试:
fresh命令分别启动redis2和redis3用来监听,然后运行redis1使用命令 go run main.go

效果如下:
redis1中:
在golang中测试订阅发布功能_第1张图片
redis2中:
在golang中测试订阅发布功能_第2张图片
redis3中:
在golang中测试订阅发布功能_第3张图片

你可能感兴趣的:(go,redis,golang,数据库,Go,redis)