【发布时间】:2014-02-25 22:46:20
【问题描述】:
我一直在玩 golang 和 redis。我只是建立了一个简单的 http 服务器,并想增加 redis 上的请求。我正在炸毁连接(我认为)。我发现使用 redigo 您可以使用连接池,但不确定当我为请求提供服务时如何在 go 中实现它(您从哪里实例化/调用池)。
错误:无法分配请求的地址。
任何建议都将不胜感激....我确定我错误地建立了连接,但不知道如何更改。
编辑:根据 pauljz 的建议进行了修改 -- 现在效果很好
var pool redis.Pool
func qryJson(rw http.ResponseWriter, req *http.Request){
incrementRedis()
}
func incrementRedis () {
t := time.Now().Format("2006-01-02 15:04:05")
conn := pool.Get()
defer conn.Close()
if _, err := conn.Do("HINCRBY", "messages", t, 1); err != nil {
log.Fatal(err)
}
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
pool = redis.Pool{
MaxIdle: 50,
MaxActive: 500, // max number of connections
Dial: func() (redis.Conn, error) {
c, err := redis.Dial("tcp", ":6379")
if err != nil {
panic(err.Error())
}
return c, err
},
}
http.HandleFunc("/testqry", qryJson)
log.Fatal(http.ListenAndServe(":8082", nil))
}
【问题讨论】:
-
当您编辑原始帖子时,很难说出这些建议指的是什么!我将恢复更正,然后发布此更新代码的要点或新部分以帮助其他人。