Documentation ¶
Overview ¶
Package mysqllock provides a distributed locking mechanism leveraging MySQL internal functions.
This package allows acquiring and releasing locks using MySQL's GET_LOCK and RELEASE_LOCK functions. It provides a MySQLLock struct that represents a locker and has methods for acquiring and releasing locks.
Example usage:
// Create a new MySQLLock instance db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/database") if err != nil { log.Fatal(err) } defer db.Close() lock := mysqllock.New(db) // Acquire a lock releaseFunc, err := lock.Acquire(context.Background(), "my_lock_key", 10*time.Second) if err != nil { log.Fatal(err) } defer releaseFunc() // Perform locked operations // Release the lock err = releaseFunc() if err != nil { log.Fatal(err) }
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ( // ErrTimeout is an error when the lock is not acquired within the timeout. ErrTimeout = errors.New("acquire lock timeout") // ErrFailed is an error when the lock is not acquired. ErrFailed = errors.New("failed to acquire a lock") )
Functions ¶
This section is empty.
Types ¶
type MySQLLock ¶
type MySQLLock struct {
// contains filtered or unexported fields
}
MySQLLock represents a locker.
type ReleaseFunc ¶
type ReleaseFunc func() error
ReleaseFunc is an alias for a release lock function.
Click to show internal directories.
Click to hide internal directories.