Help us shape the future of Go! Take the 2026 Go Developer Survey

locker

package
v1.7.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrLockAcquired = errors.New("lock is already acquired")
	ErrInvalidToken = errors.New("invalid token")
)

错误定义

Functions

func GenerateToken

func GenerateToken() string

GenerateToken 生成唯一的随机令牌

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 LockOption

type LockOption func(*LockOptions)

LockOption 锁选项函数类型

func WithTTL

func WithTTL(ttl time.Duration) LockOption

WithTTL 设置锁的过期时间

func WithWatchDog

func WithWatchDog() LockOption

WithWatchDog 启用看门狗自动续期

type LockOptions

type LockOptions struct {
	TTL      time.Duration // 锁过期时间
	WatchDog bool          // 是否启用看门狗自动续期
}

LockOptions 锁配置选项

func DefaultLockOptions

func DefaultLockOptions() *LockOptions

DefaultLockOptions 默认选项

type Locker

type Locker interface {
	// Lock 获取锁,返回锁对象和错误
	Lock(ctx context.Context, key string, opts ...LockOption) (Lock, 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 获取分布式锁

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL