Files
cloud-services/pkg/redis/client_pool.go

45 lines
618 B
Go

package redis
import (
"sync"
)
func NewClientPool(args ...Pool) ClientPoolInterface {
result := &ClientPool{}
if len(args) > 0 {
result.pool = args[0]
}
return result
}
type ClientPoolInterface interface {
GetPool() Pool
SetPool(pool Pool)
GetFromPool() Client
}
type ClientPool struct {
oncePool sync.Once
pool Pool
}
func (f *ClientPool) GetPool() Pool {
f.oncePool.Do(func() {
if f.pool == nil {
f.pool = NewPool()
}
})
return f.pool
}
func (f *ClientPool) SetPool(pool Pool) {
f.pool = pool
}
func (f *ClientPool) GetFromPool() Client {
return NewClient(f.GetPool().Get())
}