Golang项目简单初始化缓存池

这是一个简单的初始化缓存池

1.导入包

import "github.com/gomodule/redigo/redis"

2. 缓存池配置(推荐和Golang读取配置文件一起使博客:Golang项目中读取配置文件)

package setting

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

var (
   RedisPool *redis.Pool
)

func InitRedisPool() {

    RedisPool = &redis.Pool{
        //最大闲置连接
        MaxIdle: 30,
        //最大活动数
        MaxActive: 30,
        //数据库连接
        Dial: func() (redis.Conn, error) {
            c, err := redis.Dial("tcp", "127.0.0.1:6379")
            if err != nil {
                c.Close()
                fmt.Printf("fail to dial redis: %v\n", err)
                return nil, err
            }
            //密码认证,可填入redisd的连接密码
            if _, err = c.Do("AUTH", ""); err != nil {
                c.Close()
                fmt.Printf("fail to auth redis: %v\n", err)
                return nil, err
            }

            //redis 缓存数据库认证
            if _, err = c.Do("SELECT", ""); err != nil {
                c.Close()
                fmt.Printf("fail to SELECT DB redis: %v\n", err)
                return nil, err
            }
            return c, err
        },
        //测试连接是否正常
        TestOnBorrow: func(c redis.Conn, t time.Time) error {
            _, err := c.Do("PING")
            if err != nil {
                c.Close()
                fmt.Printf("fail to ping redis: %v\n", err)
                return err
            }
            return nil
        },
    }
    log.Println("connect redis success")
}

func Get() redis.Conn {
    return RedisPool.Get()
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!