go使用redigo操作连接redis

2018-07-13  本文已影响0人  ahubaoan

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
}
上一篇下一篇

猜你喜欢

热点阅读