1.安装
go get github.com/garyburd/redigo/redis
2.示例
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", "192.168.226.137:6379")
if err != nil {
fmt.Println("conn redis failed", err)
return
}
defer c.Close()
// 设置缓存时间
// c.Do("expire", "token, 10)
_, err = c.Do("AUTH", "password")
if err != nil {
c.Close()
return
}
_, err = c.Do("Set", "name", "lucy")
// c.Do("HSet", "personInfo", "name", "jack")
// c.Do("HSet", "personInfo", "age", 23)
// c.Do("MSet", "name", "tom", "age", 4)
// c.Do("lpush", "bookList", "红楼梦", "三国演义", "西游记")
if err != nil {
fmt.Println("Set data to redis failed", err)
return
}
r, err := redis.String(c.Do("Get", "name"))
// fmt.Println(redis.Int(c.Do("HGet", "personInfo", "age")))
// fmt.Println(redis.StringMap(c.Do("HGetAll", "personInfo")))
// c.Do("MGet", "name", "age")
// c.Do("lpop", "bookList") // 每次取出一个数据
if err != nil {
fmt.Println("Get data from redis failed", err)
return
}
fmt.Println(r)
}
3.连接池示例
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
"time"
)
func newPool(server, password string) *redis.Pool {
return &redis.Pool{
// 与redis建立连接
Dial: func() (conn redis.Conn, err error) {
conn, err = redis.Dial("tcp", server)
if err != nil {
return nil, err
}
if _, err = conn.Do("AUTH", password); err != nil {
conn.Close()
return nil, err
}
return conn, err
},
// 测试连接是否可用
TestOnBorrow: func(c redis.Conn, t time.Time) error {
if time.Since(t) < time.Minute{
return nil
}
_, err := c.Do("PING")
return err
},
MaxIdle: 64, // 空闲时连接数量
MaxActive: 1000, // 连接上线
IdleTimeout: 240 * time.Second, // 空闲连接超时时间
Wait: false,
// Close connections older than this duration
MaxConnLifetime: 0,
}
}
var pool *redis.Pool
func main() {
pool = newPool("192.168.226.137:6379", "password")
conn := pool.Get() // 获取一个连接
conn.Do("Set", "name", "zhangsan")
value, err := redis.String(conn.Do("Get", "name"))
if err != nil {
fmt.Println("Get value failed:", err)
return
}
fmt.Println(value)
}