亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SETEX 錯??誤 - “使用關閉的網絡連接”

SETEX 錯??誤 - “使用關閉的網絡連接”

Go
繁花不似錦 2021-11-29 15:37:19
我正在使用以下代碼從我的 Go 應用程序執行 SET 和 EXPIRE。_, err = C.Cache.Do("SETEX", key, 3600, data)但我開始收到錯誤:使用關閉的網絡連接。我使用 Gary Burd 的Redigo包和 RedisLabs。我連接到Redis的代碼是://Connect to cache (Redis)cache, err := connectToCache()if err != nil {    log.Printf("Cache connection settings are invalid")    os.Exit(1)}defer cache.Close()func connectToCache() (redis.Conn, error) {    cache, err := redis.Dial("tcp", CACHE_URI)    if err != nil {        return nil, err    }    _, err = cache.Do("AUTH", CACHE_AUTH)    if err != nil {        cache.Close()        return nil, err    }    return cache, nil}
查看完整描述

1 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

您可以使用 aredis.Pool來管理多個連接,檢查空閑連接是否處于活動狀態,并自動獲取新連接。您還可以在撥打新連接時自動執行 AUTH 步驟:


func newPool(server, password string) *redis.Pool {

    return &redis.Pool{

        MaxIdle: 3,

        IdleTimeout: 240 * time.Second,

        Dial: func () (redis.Conn, error) {

            c, err := redis.Dial("tcp", server)

            if err != nil {

                return nil, err

            }

            if _, err := c.Do("AUTH", password); err != nil {

                c.Close()

                return nil, err

            }

            return c, err

        },

        TestOnBorrow: func(c redis.Conn, t time.Time) error {

            _, err := c.Do("PING")

            return err

        },

    }

}


var (

    pool *redis.Pool

    redisServer = flag.String("redisServer", ":6379", "")

    redisPassword = flag.String("redisPassword", "", "")

)


func main() {

    flag.Parse()

    pool = newPool(*redisServer, *redisPassword)

    ...

}


查看完整回答
反對 回復 2021-11-29
  • 1 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號