Golang 通用连接池

资源链接 https://github.com/silenceper/pool

pool

GoDoc

Golang 实现的连接池

功能:


连接池中连接类型为interface{},使得更加通用

链接的最大空闲时间,超时的链接将关闭丢弃,可避免空闲时链接自动失效问题

使用channel处理池中的链接,高效

基本用法



//factory 创建连接的方法

factory := func() (interface{}, error) { return net.Dial("tcp", "127.0.0.1:4000") }



//close 关闭链接的方法

close := func(v interface{}) error { return v.(net.Conn).Close() }



//创建一个连接池: 初始化5,最大链接30

poolConfig := &pool.PoolConfig{

    InitialCap: 5,

    MaxCap:     30,

    Factory:    factory,

    Close:      close,

    //链接最大空闲时间,超过该时间的链接 将会关闭,可避免空闲时链接EOF,自动失效的问题

    IdleTimeout: 15 * time.Second,

}

p, err := pool.NewChannelPool(poolConfig)

if err != nil {

    fmt.Println("err=", err)

}



//从连接池中取得一个链接

v, err := p.Get()



//do something

//conn=v.(net.Conn)



//将链接放回连接池中

p.Put(v)



//释放连接池中的所有链接

p.Release()



//查看当前链接中的数量

current := p.Len()



注:



该连接池参考 https://github.com/fatih/pool 实现,改变以及增加原有的一些功能

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2016-11-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏电光石火

eclipse汉化

以前一直没发出来,今天整理时发现就发出来了!

2265
来自专栏云计算教程系列

如何在Ubuntu 14.04上保护WordPress免受XML-RPC攻击

WordPress是一个流行且功能强大的CMS(内容管理系统)平台。它的受欢迎程度可能会以专门针对WordPress网站的恶意流量形式引起不必要的关注。

450
来自专栏互联网开发者交流社区

SpringBoot配置文件的加载位置

1662
来自专栏游戏杂谈

xml文件转二进制文件的AIR

游戏开发中,有很多XML可能是很大的,比如一个任务配置文件,可能就接近2M(当然全部文件放在一个XML里面本身就有问题,比较好的做法就是分等级分隔XML),这...

1032
来自专栏云计算教程系列

如何在Ubuntu 14.04上设置uWSGI和Nginx以服务Python应用程序

在本教程中,我们将设置一个由uWSGI提供服务的简单WSGI应用程序。我们将使用Nginx Web服务器作为应用程序服务器的反向代理,以提供更强大的连接处理。我...

2050
来自专栏小樱的经验随笔

【亲测有效】Github无法访问或者访问速度的解决方案

我相信,很多朋友都遇到了 Github 访问速度过慢的问题,我也是在此记下笔记,方便以后拿来使用。

5121
来自专栏IMWeb前端团队

AppCan——HTMl5移动开发应用平台

AppCan是HTMl5移动开发应用平台,支持跨平台,可以简单、快速、高效开发移动应用。 倡导Hybrid App开发。 为HTML5开发提供底层Native交...

5616
来自专栏张善友的专栏

使用密码记录工具keepass来保存密码

在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢...

4129
来自专栏ml

JavaScript基础知识(1)

表单的确认 :       客户端确认         --减少服务器负载         --缩短用户等待时间         --兼容性难       服务...

2833
来自专栏Android干货

安卓开发--android library projects cannot be launched错误

3375

扫码关注云+社区

领取腾讯云代金券