Documentation
¶
Overview ¶
************************* * * distlock 基于redis的分布式锁组件 * *************************
Index ¶
- Constants
- func ErrorCode(err error) string
- func ErrorMsg(err error) string
- func Init(cache *redis.Cache) (err error)
- func InitWithArgs(cache *redis.Cache, lockDelay time.Duration) (err error)
- func Lock(resourceID string, waitTimeout, lockTimeout time.Duration) (lockedID string, err error)
- func QueryLock(resourceID string, lockedID string) (acquired bool, err error)
- func TryLock(resourceID string, lockTimeout time.Duration) (lockedID string, err error)
- func UnLock(resourceID string, lockedID string) error
- type LockError
Constants ¶
View Source
const ( ErrNotInit = "ErrNotInit" //包未初始化,需先执行Init方法 ErrParams = "ErrParams" //参数有误 ErrRedis = "ErrRedis" //redis底层错误 ErrTryLockFailed = "ErrTryLockFailed" //锁被占用,非阻塞式获取锁失败 ErrLockTimeout = "ErrLockTimeout" //锁被占用,上锁超时 ErrUnlockNotAcquired = "ErrUnlockNotAcquired" //释放失败,这可能是未获取锁或者锁已超时被自动释放 )
View Source
const (
DistLockPrefix = "DIST_LOCK_" //redis key 前缀
)
Variables ¶
This section is empty.
Functions ¶
func InitWithArgs ¶
Init 初始化
- cache redis缓存对象
- lockDelay 上锁时两次尝试上锁之间的时间间隔(ns)
- err.Code
- ErrParams 参数有误(nil)
func Lock ¶
Lock 获取锁
- resourceID 本次期望上锁的资源
- waitTimeout 获取锁操作最长等待时间,超时返回错误
- lockTimeout 锁超时时间,超过将自动释放锁
- lockedID 资源标记,释放锁时需要根据lockedID释放
- err.Code
- ErrNotInit 包没有初始化,需先调用Init
- ErrRedis redis底层错误
- ErrParams 参数有误
- ErrLockTimeout 锁被占用,上锁超时
func QueryLock ¶
QueryLock 查询是标记是否有效
- resourceID 本次查询的资源
- lockedID 获取锁时返回的资源标记
- acquired 当前是否仍持有锁
- err.Code
- ErrNotInit 包没有初始化,需先调用Init
- ErrRedis redis底层错误
Types ¶
Click to show internal directories.
Click to hide internal directories.