72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package redisLock
|
|
|
|
const (
|
|
DEFAULTMAXWAITSECOND = 5
|
|
DEFAULTMAXEXPIRESECOND = 30
|
|
)
|
|
|
|
type RedisLockOptions struct {
|
|
isBlock bool
|
|
maxWaitSecond int
|
|
expireSecond int
|
|
isReNew bool
|
|
}
|
|
|
|
func (r *RedisLockOptions) repairOption() {
|
|
//if r.isBlock && r.maxWaitSecond <= 0 {
|
|
// r.maxWaitSecond = DEFAULTMAXWAITSECOND
|
|
//}
|
|
|
|
if r.expireSecond > 0 {
|
|
return
|
|
}
|
|
|
|
r.expireSecond = DEFAULTMAXEXPIRESECOND
|
|
r.isReNew = true
|
|
}
|
|
|
|
type RedisLockOption func(*RedisLockOptions)
|
|
|
|
func WithBlock() RedisLockOption {
|
|
return func(o *RedisLockOptions) {
|
|
o.isBlock = true
|
|
}
|
|
}
|
|
|
|
func WithMaxWaitTime(maxWaitTime int) RedisLockOption {
|
|
return func(o *RedisLockOptions) {
|
|
o.maxWaitSecond = maxWaitTime
|
|
}
|
|
}
|
|
|
|
func WithExpireTime(expireTime int) RedisLockOption {
|
|
return func(o *RedisLockOptions) {
|
|
o.expireSecond = expireTime
|
|
}
|
|
}
|
|
|
|
type RedLockOptions struct {
|
|
perHostTimeout int
|
|
expireHostTime int
|
|
}
|
|
|
|
func (r *RedLockOptions) repairOption() {
|
|
if r.perHostTimeout <= 0 {
|
|
r.perHostTimeout = DEFAULTMAXWAITSECOND
|
|
}
|
|
}
|
|
|
|
type RedLockOption func(*RedLockOptions)
|
|
|
|
func WithPerHostTimeout(perHostTimeout int) RedLockOption {
|
|
return func(o *RedLockOptions) {
|
|
o.perHostTimeout = perHostTimeout
|
|
}
|
|
}
|
|
|
|
func WithExpireHostTime(expireTime int) RedLockOption {
|
|
return func(o *RedLockOptions) {
|
|
o.expireHostTime = expireTime
|
|
}
|
|
}
|