redigo代码分析-pool
来源:互联网 发布:排列三九宫图算法 编辑:程序博客网 时间:2024/05/21 10:40
redis连接池获取一个连接,在获取连接之前,先把超时的空闲连接断开
// get prunes stale connections and returns a connection from the idle list or
// creates a new connection.func (p *Pool) get() (Conn, error) {
p.mu.Lock()
// Prune stale connections.
if timeout := p.IdleTimeout; timeout > 0 {
for i, n := 0, p.idle.Len(); i < n; i++ {
e := p.idle.Back()
if e == nil {
break
}
ic := e.Value.(idleConn)
if ic.t.Add(timeout).After(nowFunc()) {
break
}
p.idle.Remove(e)
p.release()
p.mu.Unlock()
ic.c.Close()
p.mu.Lock()
}
}
......
}
对空闲list遍历,如果该连接在失效时间(timeout)内,则认为是可用连接,否则当做失效连接,删除。找到第一个可用连接即可返回。
注意: 这里是从后向前遍历,找到第一个可用的就退出。在下面的循环中(没有列出,省略了),是从前面获取一个,这也是返回最近使用过的连接。因为在put的时候,是放在list的前面的。
0 0
- redigo代码分析-pool
- redigo代码分析-特殊字符
- redigo的redis.Pool 配置参数调优
- ceph的pool创建流程--代码分析
- redigo 用户指南
- Jabberd2源代码分析:pool
- shared pool 深入分析!
- commons-pool分析
- Apache Commons-Pool 源码分析
- commons-pool源码分析总结
- Message(Message Pool)源码分析
- Apache Commons pool 简介和pool连接池代码
- Redigo--Go连接Redis
- Redigo--Go连接Redis
- redigo长连接/复用
- redigo 批量删除使用
- go redis redigo
- POOL
- Android工程方法数超过65535
- Activiti小知识总结
- css 水平和垂直居中 js 引用外部css
- Activiti根据Flowname进行转向
- java map转javaBean 反射参数异常处理
- redigo代码分析-pool
- UNITY3D音频管理器
- MySQL笔记 一
- Oracle事物中的savepoint
- java网络编程
- 接口测试及httpclient深入
- Spring MVC总结
- C++结构体与指针
- oracle 变量使用