SETEX错误-“使用封闭的网络连接”

我正在使用以下代码从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

}

回答:

您可以使用redis.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)

...

}

以上是 SETEX错误-“使用封闭的网络连接” 的全部内容, 来源链接: utcz.com/qa/418442.html

回到顶部