Redigo Redis Pool真的应该是一个全局变量吗?

时间:2014-07-26 13:47:34

标签: go redis redigo

在这里的例子Redigo Docs for Pool中,redis池被设置为func main中的全局变量。这是一种犹太人的做事方式吗?你真的应该左右使用全局变量,还是有更好,更优选的方法来完成同样的事情?

1 个答案:

答案 0 :(得分:1)

我见过的唯一其他解决方案,例如“Passing Context to Interface Methods”是:

  

创建一个struct,接受嵌入的上下文和我们的handler类型,由于http.Handler,我们仍然满足ServeHTTP界面。

在您的情况下,struct会包含poolhandler功能。

type appContext struct {
    pool Pool
}

type appHandler struct {
    *appContext
    h func(a *appContext, w http.ResponseWriter, r *http.Request) (int, error)
}

func (ah appHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
   ...
}


func main() {
    context := &appContext{
        pool:    ...,
        // any other data
    }
}