golang redis 是编译的时候创建一个连接池在那里 还是...

golang redis 是编译的时候创建一个连接池在那里
每次查询的时候从连接池里获取一个连接呢
还是每次查询都连接数据库然后defer close?

阅读 3.1k
1 个回答

是编译完后的go可执行程序首次启动后,创建了go服务端进程,这个进程会初始化redis连接池,连接池里有一定数量的redis连接。 当你的程序接受请求,需要查询redis时,先从redis连接池里捞一个空闲的redis连接,然后通过这个连接访问redis server。用完后,把连接放回连接池。
这样的话,避免了每次使用redis都重新连接(想想TCP的三次握手,三个单程的包传递),所以程序性能会提高。
还有一些问题: 比如连接长时间空闲,redis服务端主动关闭,连接失效怎么办?失效了重连就好。 连接池需要保证每个连接的有效性。
并发数太大,连接不够用怎么办? 等等。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题