美文网首页
go使用redigo操作连接redis

go使用redigo操作连接redis

作者: ahubaoan | 来源:发表于2018-07-13 15:21 被阅读0次

    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
    }
    

    相关文章

      网友评论

          本文标题:go使用redigo操作连接redis

          本文链接:https://www.haomeiwen.com/subject/iszjpftx.html