go目前用的比较广泛的redis库就是这个redigo了:
https://github.com/garyburd/redigo
比起简单的连接,这个库支持直接制作一个连接池来操作redis
这里简单实用open-falcon的一个代码片段解释一下:
package g
import (
//redigo的库
"github.com/garyburd/redigo/redis"
"log"
"time"
)
//声明一个连接池
var RedisConnPool *redis.Pool
func InitRedisConnPool() {
//从配置中读取地址
dsn := Config().Alarm.Redis.Dsn
//最大连接数
maxIdle := Config().Alarm.Redis.MaxIdle
//超时时间
idleTimeout := 240 * time.Second
connTimeout := time.Duration(Config().Alarm.Redis.ConnTimeout) * time.Millisecond
readTimeout := time.Duration(Config().Alarm.Redis.ReadTimeout) * time.Millisecond
writeTimeout := time.Duration(Config().Alarm.Redis.WriteTimeout) * time.Millisecond
//这个即可连接
RedisConnPool = &redis.Pool{
MaxIdle: maxIdle,
IdleTimeout: idleTimeout,
Dial: func() (redis.Conn, error) {
c, err := redis.DialTimeout("tcp", dsn, connTimeout, readTimeout, writeTimeout)
if err != nil {
return nil, err
}
return c, err
},
TestOnBorrow: PingRedis,
}
}
// 查看状态的回调
func PingRedis(c redis.Conn, t time.Time) error {
_, err := c.Do("ping")
if err != nil {
log.Println("[ERROR] ping redis fail", err)
}
return err
}
网友评论