redsync

package module
v0.0.0-...-e19edef Latest Latest
Warning

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

Go to latest
Published: Jun 4, 2022 License: Apache-2.0 Imports: 8 Imported by: 0

README

go-sync-util

FOR INTERNAL USE

Documentation

Overview

Package redsync provides a Redis-based distributed mutual exclusion lock implementation as described in the post http://redis.io/topics/distlock.

Values containing the types defined in this package should not be copied.

Index

Constants

This section is empty.

Variables

View Source
var ErrExtendFailed = errors.New("redsync: failed to extend lock")

ErrExtendFailed is the error resulting if Redsync fails to extend the lock.

View Source
var ErrFailed = errors.New("redsync: failed to acquire lock")

ErrFailed is the error resulting if Redsync fails to acquire the lock after exhausting all retries.

Functions

This section is empty.

Types

type DelayFunc

type DelayFunc func(tries int) time.Duration

A DelayFunc is used to decide the amount of time to wait between retries.

type Mutex

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

A Mutex is a distributed mutual exclusion lock.

func (*Mutex) Extend

func (m *Mutex) Extend() (bool, error)

Extend resets the mutex's expiry and returns the status of expiry extension.

func (*Mutex) ExtendContext

func (m *Mutex) ExtendContext(ctx context.Context) (bool, error)

ExtendContext resets the mutex's expiry and returns the status of expiry extension.

func (*Mutex) Lock

func (m *Mutex) Lock() error

Lock locks m. In case it returns an error on failure, you may retry to acquire the lock by calling this method again.

func (*Mutex) LockContext

func (m *Mutex) LockContext(ctx context.Context) error

LockContext locks m. In case it returns an error on failure, you may retry to acquire the lock by calling this method again.

func (*Mutex) Name

func (m *Mutex) Name() string

Name returns mutex name (i.e. the Redis key).

func (*Mutex) Unlock

func (m *Mutex) Unlock() (bool, error)

Unlock unlocks m and returns the status of unlock.

func (*Mutex) UnlockContext

func (m *Mutex) UnlockContext(ctx context.Context) (bool, error)

UnlockContext unlocks m and returns the status of unlock.

func (*Mutex) Until

func (m *Mutex) Until() time.Time

Until returns the time of validity of acquired lock. The value will be zero value until a lock is acquired.

func (*Mutex) Valid deprecated

func (m *Mutex) Valid() (bool, error)

Valid returns true if the lock acquired through m is still valid. It may also return true erroneously if quorum is achieved during the call and at least one node then takes long enough to respond for the lock to expire.

Deprecated: Use Until instead. See https://github.com/go-redsync/redsync/issues/72.

func (*Mutex) ValidContext deprecated

func (m *Mutex) ValidContext(ctx context.Context) (bool, error)

ValidContext returns true if the lock acquired through m is still valid. It may also return true erroneously if quorum is achieved during the call and at least one node then takes long enough to respond for the lock to expire.

Deprecated: Use Until instead. See https://github.com/go-redsync/redsync/issues/72.

func (*Mutex) Value

func (m *Mutex) Value() string

Value returns the current random value. The value will be empty until a lock is acquired (or WithValue option is used).

type Option

type Option interface {
	Apply(*Mutex)
}

An Option configures a mutex.

func WithDriftFactor

func WithDriftFactor(factor float64) Option

WithDriftFactor can be used to set the clock drift factor.

func WithExpiry

func WithExpiry(expiry time.Duration) Option

WithExpiry can be used to set the expiry of a mutex to the given value.

func WithGenValueFunc

func WithGenValueFunc(genValueFunc func() (string, error)) Option

WithGenValueFunc can be used to set the custom value generator.

func WithRetryDelay

func WithRetryDelay(delay time.Duration) Option

WithRetryDelay can be used to set the amount of time to wait between retries.

func WithRetryDelayFunc

func WithRetryDelayFunc(delayFunc DelayFunc) Option

WithRetryDelayFunc can be used to override default delay behavior.

func WithTimeoutFactor

func WithTimeoutFactor(factor float64) Option

WithTimeoutFactor can be used to set the timeout factor.

func WithTries

func WithTries(tries int) Option

WithTries can be used to set the number of times lock acquire is attempted.

func WithValue

func WithValue(v string) Option

WithValue can be used to assign the random value without having to call lock. This allows the ownership of a lock to be "transferred" and allows the lock to be unlocked from elsewhere.

type OptionFunc

type OptionFunc func(*Mutex)

OptionFunc is a function that configures a mutex.

func (OptionFunc) Apply

func (f OptionFunc) Apply(mutex *Mutex)

Apply calls f(mutex)

type Redsync

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

Redsync provides a simple method for creating distributed mutexes using multiple Redis connection pools.

func New

func New(pools ...redis.Pool) *Redsync

New creates and returns a new Redsync instance from given Redis connection pools.

func (*Redsync) NewMutex

func (r *Redsync) NewMutex(name string, options ...Option) *Mutex

NewMutex returns a new distributed mutex with given name.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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