golang 与 Redis实现 订阅/发布

Foto_cj · · 1747 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

### golang 使用 redigo 库链接Redis ### 订阅: ```go func subs() { //订阅 conn := pool.Get() defer conn.Close() fmt.Println("接收消息....") psc := redis.PubSubConn{conn} _ = psc.Subscribe("chan_go") for{ switch v := psc.Receive().(type) { case redis.Message: fmt.Printf("%s: message: %s\n", v.Channel, v.Data) case redis.Subscription: fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) case error: fmt.Println(v) return } } } ``` ### 发布: ```go func push(message string) { //发布消息 conn := pool.Get() defer conn.Close() fmt.Println("发布消息....") _,err := conn.Do("Publish","chan_go",message) if err != nil{ fmt.Println(err) return } } ``` ### 连接池: ```go func inits() { pool = &redis.Pool{ MaxIdle: 8, IdleTimeout: 100, Dial: func() (redis.Conn, error) { c, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { return nil, err } return c, err }, } } ``` ### 所有代码 ```go package main import ( "fmt" "github.com/garyburd/redigo/redis" "time" ) var pool *redis.Pool func main() { inits() go subs() go push("this is wd") time.Sleep(3 * time.Second) fmt.Println("Redis----") } //建立连接池 func inits() { pool = &redis.Pool{ MaxIdle: 8, IdleTimeout: 100, Dial: func() (redis.Conn, error) { c, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { return nil, err } return c, err }, } } //订阅 func subs() { //订阅 conn := pool.Get() defer conn.Close() fmt.Println("接收消息....") psc := redis.PubSubConn{conn} _ = psc.Subscribe("chan_go") for{ switch v := psc.Receive().(type) { case redis.Message: fmt.Printf("%s: message: %s\n", v.Channel, v.Data) case redis.Subscription: fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) case error: fmt.Println(v) return } } } //发布消息 func push(message string) { //发布消息 conn := pool.Get() defer conn.Close() fmt.Println("发布消息....") _,err := conn.Do("Publish","chan_go",message) if err != nil{ fmt.Println(err) return } } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1747 次点击  ∙  1 赞  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传