使用 redigo,我创建了一个池,如下所示:
&redis.Pool{
MaxIdle: 80,
MaxActive: 12000, // max number of connections
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", host+":"+port)
if err != nil {
panic(err.Error())
}
return c, err
}
我遇到的问题是,每次获得新连接时,我都需要设置数据库,因为我使用不同的 redis 数据库,因为我在 VPS 上托管了许多站点。
所以,像这样:
conn := pool.Get()
defer conn.Close()
conn.Do("SELECT", dbNumber) //this is the call I want to avoid
每次使用 redis 时都必须选择 db 似乎是多余的,而且还会带来一个问题,因为我将它用于会话,即使用不是我的代码与我的池中的 redis 连接一起工作,这使得“不可能”设置正确的 db它。
我想做的是为池设置dbno,这样每当有人要求从池中建立新连接时,它就会带有已经设置的正确db,即每次都没有明确设置它。
你是如何在你的应用程序中解决这个问题的?
谢谢。