Golang專案簡單初始化快取池

奇蹟師發表於2021-06-16

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 協議》,轉載必須註明作者和本文連結

相關文章