golang Redisのパブリケーションとサブスクリプションdemo

1033 ワード

//redis     
func main()  {
	err := initRedis()
	if err != nil {
		logs.Debug(fmt.Sprintf("connect redis err: %s", err.Error()))
		os.Exit(1)
	}
	//  test  
	pubSub,err:=rds.Sub("test")
	if err!=nil {
		fmt.Println(err)
	}
	//  
	go func() {
		var receipt interface{}
		var err error
		for  {
			receipt,err=pubSub.Receive()
			if err !=nil {
				fmt.Println(err)
			}
			//fmt.Println(reflect.ValueOf(receipt).String())
			if receipt !="" {
				switch v := receipt.(type) {
				case *redis.Message://    subscribe
					fmt.Printf("%s: message: %s
", v.Channel,v.Payload) case error: return } } } }() // test for i:=0;i<10 ;i++ { _,err:=rds.Pub("test",strconv.Itoa(i)) if err !=nil { fmt.Println(err) } time.Sleep(time.Second) } //http.ListenAndServe(":80",nil) }

注意使用するredisのパケットが異なると、サブスクリプションが受信するメッセージのタイプが異なる可能性があります.反射を先に使用することができます.
reflect.ValueOf(receipt).String()