golang 客户端工具redigo学习

参考:https://godoc.org/github.com/garyburd/redigo/redis

package main


import (
"fmt"
"github.com/garyburd/redigo/redis"
"log"
"os"
"time"
)


var logger *log.Logger


func init() {
file, err := os.Create("test.log")
if err != nil {
log.Fatal(err)
}
logger = log.New(file, "", log.LstdFlags|log.Llongfile)
}


const (
redis_host string = "192.168.100.151:6379"
)


func main() {
// 初始化链接池
pool := &redis.Pool{
MaxIdle:   80,
MaxActive: 12000, // max number of connections
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", redis_host)
if err != nil {
panic(err.Error())
}
return c, err
},
IdleTimeout: time.Second * 1,
}
// redis.DialTimeout("tcp", redis_host, 0, 1*time.Second, 1*time.Second)
conn := pool.Get()
defer conn.Close()


//命令执行
_, err := conn.Do("SET", "user:user0", 123)
if err != nil {
logger.Println(err)
}
user0, err := redis.Int(conn.Do("GET", "user:user0"))
fmt.Println(user0)


//管道操作
conn.Send("SET", "foo", "bar")
conn.Send("GET", "foo")
conn.Flush()
conn.Receive()
v, err := redis.String(conn.Receive())
if err != nil {
logger.Fatal(err)
}
fmt.Println(v)


// send,flush,receive实现发布订阅
conn.Send("SUBSCRIBE", "example")
conn.Flush()
// conn.Receive()
for {
// reply, err := conn.Receive()
// if err != nil {
// logger.Fatal(err)
// }
reply, _ := redis.Values(conn.Receive())
fmt.Println(reply)
}


//PubSubConn
// psc := redis.PubSubConn{conn}
// psc.Subscribe("example")
// // go conn.Do("publish", "example", "hellowrld")
// 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)
// }
// }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值