package Redis_DB
import (
"github.com.Go-Redis/github.com/alphazero/Go-Redis"
"glog-master"
)
// 链接池结构体
type STRedis_Pool struct {
Redis_Client redis.Client
}
// 链接池的最大链接数量
const MAX_REDIS_POOL_SIZE int = 100
// 全局内存数据库变量
var REDISPool chan *STRedis_Pool
// 获取链接指针函数
func GetREDIS() *STRedis_Pool {
if REDISPool == nil {
REDISPool = make(chan *STRedis_Pool, MAX_REDIS_POOL_SIZE)
}
if len(REDISPool) == 0 {
go func() {
for i := 0; i < MAX_REDIS_POOL_SIZE/2; i++ {
redistmp := new(STRedis_Pool)
var err error
// 测试
spec := redis.DefaultSpec().Host("127.0.0.1").Port(6379).Password("test")
redistmp.Redis_Client, err = redis.NewSynchClientWithSpec(spec)
if err != nil {
glog.Info("error on connect redis server", err)
continue
}
putREDIS(redistmp)
}
}()
}
return <-REDISPool
}
//存储指针函数
func putREDIS(conn *STRedis_Pool) {
if REDISPool == nil {
REDISPool = make(chan *STRedis_Pool, MAX_REDIS_POOL_SIZE)
}
if len(REDISPool) == MAX_REDIS_POOL_SIZE {
//conn.Redis_Client.Close()
return
}
REDISPool <- conn
}
使用的redis第三方库不一样,可能没有基础的连接池的,以上是简单测试;