1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-21 23:10:55 +00:00

Add new config option into provider struct

This commit is contained in:
Phillip Stagnet 2020-08-11 16:09:29 +02:00
parent d1d9df74c7
commit 7267f5e573
No known key found for this signature in database
GPG Key ID: 029E4A7879FBE381
3 changed files with 54 additions and 55 deletions

View File

@ -109,12 +109,15 @@ func (rs *SessionStore) SessionRelease(w http.ResponseWriter) {
// Provider redis session provider // Provider redis session provider
type Provider struct { type Provider struct {
maxlifetime int64 maxlifetime int64
savePath string savePath string
poolsize int poolsize int
password string password string
dbNum int dbNum int
poollist *redis.Client idleTimeout time.Duration
idleCheckFrequency time.Duration
maxRetries int
poollist *redis.Client
} }
// SessionInit init redis session // SessionInit init redis session
@ -149,25 +152,22 @@ func (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {
} else { } else {
rp.dbNum = 0 rp.dbNum = 0
} }
var idleTimeout time.Duration = 0
if len(configs) > 4 { if len(configs) > 4 {
timeout, err := strconv.Atoi(configs[4]) timeout, err := strconv.Atoi(configs[4])
if err == nil && timeout > 0 { if err == nil && timeout > 0 {
idleTimeout = time.Duration(timeout) * time.Second rp.idleTimeout = time.Duration(timeout) * time.Second
} }
} }
var idleCheckFrequency time.Duration = 0
if len(configs) > 5 { if len(configs) > 5 {
checkFrequency, err := strconv.Atoi(configs[5]) checkFrequency, err := strconv.Atoi(configs[5])
if err == nil && checkFrequency > 0 { if err == nil && checkFrequency > 0 {
idleCheckFrequency = time.Duration(checkFrequency) * time.Second rp.idleCheckFrequency = time.Duration(checkFrequency) * time.Second
} }
} }
var maxRetries = 0
if len(configs) > 6 { if len(configs) > 6 {
retries, err := strconv.Atoi(configs[6]) retries, err := strconv.Atoi(configs[6])
if err == nil && retries > 0 { if err == nil && retries > 0 {
maxRetries = retries rp.maxRetries = retries
} }
} }
@ -176,9 +176,9 @@ func (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {
Password: rp.password, Password: rp.password,
PoolSize: rp.poolsize, PoolSize: rp.poolsize,
DB: rp.dbNum, DB: rp.dbNum,
IdleTimeout: idleTimeout, IdleTimeout: rp.idleTimeout,
IdleCheckFrequency: idleCheckFrequency, IdleCheckFrequency: rp.idleCheckFrequency,
MaxRetries: maxRetries, MaxRetries: rp.maxRetries,
}) })
return rp.poollist.Ping().Err() return rp.poollist.Ping().Err()
@ -249,4 +249,3 @@ func (rp *Provider) SessionAll() int {
func init() { func init() {
session.Register("redis", redispder) session.Register("redis", redispder)
} }

View File

@ -107,12 +107,15 @@ func (rs *SessionStore) SessionRelease(w http.ResponseWriter) {
// Provider redis_cluster session provider // Provider redis_cluster session provider
type Provider struct { type Provider struct {
maxlifetime int64 maxlifetime int64
savePath string savePath string
poolsize int poolsize int
password string password string
dbNum int dbNum int
poollist *rediss.ClusterClient idleTimeout time.Duration
idleCheckFrequency time.Duration
maxRetries int
poollist *rediss.ClusterClient
} }
// SessionInit init redis_cluster session // SessionInit init redis_cluster session
@ -147,35 +150,32 @@ func (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {
} else { } else {
rp.dbNum = 0 rp.dbNum = 0
} }
var idleTimeout time.Duration = 0
if len(configs) > 4 { if len(configs) > 4 {
timeout, err := strconv.Atoi(configs[4]) timeout, err := strconv.Atoi(configs[4])
if err == nil && timeout > 0 { if err == nil && timeout > 0 {
idleTimeout = time.Duration(timeout) * time.Second rp.idleTimeout = time.Duration(timeout) * time.Second
} }
} }
var idleCheckFrequency time.Duration = 0
if len(configs) > 5 { if len(configs) > 5 {
checkFrequency, err := strconv.Atoi(configs[5]) checkFrequency, err := strconv.Atoi(configs[5])
if err == nil && checkFrequency > 0 { if err == nil && checkFrequency > 0 {
idleCheckFrequency = time.Duration(checkFrequency) * time.Second rp.idleCheckFrequency = time.Duration(checkFrequency) * time.Second
} }
} }
var maxRetries = 0
if len(configs) > 6 { if len(configs) > 6 {
retries, err := strconv.Atoi(configs[6]) retries, err := strconv.Atoi(configs[6])
if err == nil && retries > 0 { if err == nil && retries > 0 {
maxRetries = retries rp.maxRetries = retries
} }
} }
rp.poollist = rediss.NewClusterClient(&rediss.ClusterOptions{ rp.poollist = rediss.NewClusterClient(&rediss.ClusterOptions{
Addrs: strings.Split(rp.savePath, ";"), Addrs: strings.Split(rp.savePath, ";"),
Password: rp.password, Password: rp.password,
PoolSize: rp.poolsize, PoolSize: rp.poolsize,
IdleTimeout: idleTimeout, IdleTimeout: rp.idleTimeout,
IdleCheckFrequency: idleCheckFrequency, IdleCheckFrequency: rp.idleCheckFrequency,
MaxRetries: maxRetries, MaxRetries: rp.maxRetries,
}) })
return rp.poollist.Ping().Err() return rp.poollist.Ping().Err()
} }

View File

@ -107,13 +107,16 @@ func (rs *SessionStore) SessionRelease(w http.ResponseWriter) {
// Provider redis_sentinel session provider // Provider redis_sentinel session provider
type Provider struct { type Provider struct {
maxlifetime int64 maxlifetime int64
savePath string savePath string
poolsize int poolsize int
password string password string
dbNum int dbNum int
poollist *redis.Client idleTimeout time.Duration
masterName string idleCheckFrequency time.Duration
maxRetries int
poollist *redis.Client
masterName string
} }
// SessionInit init redis_sentinel session // SessionInit init redis_sentinel session
@ -157,37 +160,34 @@ func (rp *Provider) SessionInit(maxlifetime int64, savePath string) error {
} else { } else {
rp.masterName = "mymaster" rp.masterName = "mymaster"
} }
var idleTimeout time.Duration = 0
if len(configs) > 5 { if len(configs) > 5 {
timeout, err := strconv.Atoi(configs[4]) timeout, err := strconv.Atoi(configs[4])
if err == nil && timeout > 0 { if err == nil && timeout > 0 {
idleTimeout = time.Duration(timeout) * time.Second rp.idleTimeout = time.Duration(timeout) * time.Second
} }
} }
var idleCheckFrequency time.Duration = 0
if len(configs) > 6 { if len(configs) > 6 {
checkFrequency, err := strconv.Atoi(configs[5]) checkFrequency, err := strconv.Atoi(configs[5])
if err == nil && checkFrequency > 0 { if err == nil && checkFrequency > 0 {
idleCheckFrequency = time.Duration(checkFrequency) * time.Second rp.idleCheckFrequency = time.Duration(checkFrequency) * time.Second
} }
} }
var maxRetries = 0
if len(configs) > 7 { if len(configs) > 7 {
retries, err := strconv.Atoi(configs[6]) retries, err := strconv.Atoi(configs[6])
if err == nil && retries > 0 { if err == nil && retries > 0 {
maxRetries = retries rp.maxRetries = retries
} }
} }
rp.poollist = redis.NewFailoverClient(&redis.FailoverOptions{ rp.poollist = redis.NewFailoverClient(&redis.FailoverOptions{
SentinelAddrs: strings.Split(rp.savePath, ";"), SentinelAddrs: strings.Split(rp.savePath, ";"),
Password: rp.password, Password: rp.password,
PoolSize: rp.poolsize, PoolSize: rp.poolsize,
DB: rp.dbNum, DB: rp.dbNum,
MasterName: rp.masterName, MasterName: rp.masterName,
IdleTimeout: idleTimeout, IdleTimeout: rp.idleTimeout,
IdleCheckFrequency: idleCheckFrequency, IdleCheckFrequency: rp.idleCheckFrequency,
MaxRetries: maxRetries, MaxRetries: rp.maxRetries,
}) })
return rp.poollist.Ping().Err() return rp.poollist.Ping().Err()