friendly

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 27, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseQuietly

func CloseQuietly(c io.Closer)

func FormatMillis

func FormatMillis(ms int64) string

func GetOrDefault

func GetOrDefault[T comparable](v, def T) T

func NewRedis

func NewRedis(rootCtx context.Context, mLogger log.Logger, dsn string) (*redis.Client, func(), error)

func NewRedisCluster

func NewRedisCluster(
	rootCtx context.Context,
	mLogger log.Logger,
	seeds []string,
	passwd string,
	readOnly bool,
) (*redis.ClusterClient, func(), error)

Types

type RedisLeader

type RedisLeader struct {
	// contains filtered or unexported fields
}

RedisLeader 通过 Redis 实现单点执行的领导者选举: - 以 SET NX PX 获取锁(TTL=ttl) - 周期性校验并续期(仅当 value 匹配本实例 id 时) - 丢失领导权后自动退出工作回调并重试抢占 - Stop 时安全释放(compare-and-del) 兼容:*redis.Client / *redis.ClusterClient(通过 redis.Cmdable)

func NewRedisClusterLeader

func NewRedisClusterLeader(
	rdb *redis.ClusterClient,
	key string,
	ttl, renewEvery time.Duration,
	logger log.Logger,
	onStarted func(context.Context),
	onStopped func(context.Context),
) *RedisLeader

NewRedisClusterLeader:集群版构造器

func NewRedisLeader

func NewRedisLeader(
	rdb *redis.Client,
	key string,
	ttl, renewEvery time.Duration,
	logger log.Logger,
	onStarted func(context.Context),
	onStopped func(context.Context),
) *RedisLeader

NewRedisLeader:单机版构造器

func (*RedisLeader) Start

func (l *RedisLeader) Start(ctx context.Context) error

Start 启动领导者循环:抢占 → 续期 → 丢失后重试

func (*RedisLeader) Stop

func (l *RedisLeader) Stop(ctx context.Context) error

Stop 停止并释放锁

Jump to

Keyboard shortcuts

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