Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( ErrLockAcquired = errors.New("lock is already acquired") ErrLockNotHeld = errors.New("lock is not held") ErrInvalidToken = errors.New("invalid token") )
错误定义
Functions ¶
Types ¶
type Lock ¶
type Lock interface {
// Key 获取锁的 key
Key() string
// Token 获取锁的唯一令牌(用于安全释放)
Token() string
// Unlock 释放锁
Unlock(ctx context.Context) error
// Extend 延长锁的过期时间
Extend(ctx context.Context, ttl time.Duration) error
}
Lock 单个锁实例接口
type LockOptions ¶
LockOptions 锁配置选项
type Locker ¶
type Locker interface {
// Lock 获取锁,返回锁对象和错误
Lock(ctx context.Context, key string, opts ...LockOption) (Lock, error)
// Unlock 释放锁(根据 key)
Unlock(ctx context.Context, key string) error
// Extend 延长锁的过期时间
Extend(ctx context.Context, key string, ttl time.Duration) error
}
Locker 分布式锁接口
type RedisLocker ¶
type RedisLocker struct {
// contains filtered or unexported fields
}
RedisLocker 基于 Redis 的分布式锁实现
func NewRedisLocker ¶
func NewRedisLocker(client *redis.Client) *RedisLocker
NewRedisLocker 创建 Redis 分布式锁实例
func (*RedisLocker) Lock ¶
func (l *RedisLocker) Lock(ctx context.Context, key string, opts ...LockOption) (Lock, error)
Lock 获取分布式锁
Click to show internal directories.
Click to hide internal directories.