第一次从项目开发中得到的一些总结:
1、如main包中有三个文件:不能在main.go中点右键运行,死活不成功,这个坑把我整安逸了,没有老师教,悲哀啊。
要在终端中运行:
go run *.go
2、如何连接redis连接池。
// 定义一个全局的pool
var pool *redis.Pool
func initPool(address string, maxIdle, maxActive int, idleTimeout time.Duration) {
pool = &redis.Pool{
MaxIdle: 16, //最大空闲链接数
MaxActive: 0, // 表示和数据库的最大链接数, 0 表示没有限制
IdleTimeout: 300, // 最大空闲时间
Dial: func() (redis.Conn, error) { // 初始化链接的代码, 链接哪个ip的redis
c, err := redis.Dial("tcp", address)
if err != nil {
return nil, err
}
if _, err := c.Do("AUTH", "foobared"); err != nil {
c.Close()
return nil, err
}
return c, err
//return redis.Dial("tcp", address)
},
}
}
func initUserDao() {
model.MyUserDao = model.NewUserDao(pool)
}
func main() {
initPool("localhost:6379", 16, 0, 10*time.Second)
initUserDao()
如此就可以在服务端通过创建model包,在model包中应用工厂模式创建一个NewUserDao实例,监听客户端前求。参看上图。
3、报write tcp 127.0.0.1:9001->127.0.0.1:52862: write: broken pipe 错误
如图看看有没有将连接池加上, 这个问题搞了几天,求人无门,终算搞好了,差点就放弃了。