Documentation ¶
Overview ¶
Package dlock 提供分布式锁原语,支持 Redis 和 etcd。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type EtcdLock ¶
type EtcdLock struct {
// contains filtered or unexported fields
}
EtcdLock 结构体表示一个基于 etcd 的分布式锁
type Locker ¶
type Locker interface { // Lock 阻塞直到获取到锁或上下文被取消。 // 参数: // - ctx: 上下文,用于控制锁的获取操作。 // 返回值: // - error: 如果获取锁失败则返回错误。 Lock(ctx context.Context) error // Unlock 释放锁,如果解锁成功,键将被自动删除。 // 参数: // - ctx: 上下文,用于控制锁的释放操作。 // 返回值: // - error: 如果释放锁失败则返回错误。 Unlock(ctx context.Context) error // TryLock 尝试获取锁而不阻塞。 // 参数: // - ctx: 上下文,用于控制锁的获取操作。 // 返回值: // - bool: 如果成功获取锁则返回 true,否则返回 false。 // - error: 如果发生错误则返回错误。 TryLock(ctx context.Context) (bool, error) // Close 关闭锁资源。 // 返回值: // - error: 如果关闭资源失败则返回错误。 Close() error }
Locker 是一个接口,封装了基本的锁定操作。
func NewEtcd ¶
NewEtcd 创建一个新的 etcd 分布式锁 参数: - client: etcd 客户端实例,不能为空 - key: 锁的键,不能为空 - ttl: 会话的过期时间(秒),如果小于等于 0 则使用默认值 返回值: - Locker: 分布式锁接口实例 - error: 如果创建失败则返回错误
func NewRedisClusterLock ¶
func NewRedisClusterLock(clusterClient *redis.ClusterClient, key string, options ...redsync.Option) (Locker, error)
NewRedisClusterLock 创建一个新的 Redis 集群分布式锁 参数: - clusterClient: Redis 集群客户端实例,不能为空 - key: 锁的键,不能为空 - options: 可选的 redsync 选项 返回值: - Locker: 分布式锁接口实例 - error: 如果创建失败则返回错误
func NewRedisLock ¶
NewRedisLock 创建一个新的 Redis 分布式锁 参数: - client: Redis 客户端实例,不能为空 - key: 锁的键,不能为空 - options: 可选的 redsync 选项 返回值: - Locker: 分布式锁接口实例 - error: 如果创建失败则返回错误
type RedisLock ¶
type RedisLock struct {
// contains filtered or unexported fields
}
RedisLock 使用 Redis 实现的分布式锁
Click to show internal directories.
Click to hide internal directories.