golang redis 是编译的时候创建一个连接池在那里
每次查询的时候从连接池里获取一个连接呢
还是每次查询都连接数据库然后defer close?
golang redis 是编译的时候创建一个连接池在那里
每次查询的时候从连接池里获取一个连接呢
还是每次查询都连接数据库然后defer close?
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
2 回答3.1k 阅读
4 回答2.3k 阅读
1 回答3.4k 阅读
1 回答1.9k 阅读✓ 已解决
2 回答883 阅读✓ 已解决
是编译完后的go可执行程序首次启动后,创建了go服务端进程,这个进程会初始化redis连接池,连接池里有一定数量的redis连接。 当你的程序接受请求,需要查询redis时,先从redis连接池里捞一个空闲的redis连接,然后通过这个连接访问redis server。用完后,把连接放回连接池。
这样的话,避免了每次使用redis都重新连接(想想TCP的三次握手,三个单程的包传递),所以程序性能会提高。
还有一些问题: 比如连接长时间空闲,redis服务端主动关闭,连接失效怎么办?失效了重连就好。 连接池需要保证每个连接的有效性。
并发数太大,连接不够用怎么办? 等等。