lock

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

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

Go to latest
Published: Aug 1, 2017 License: MIT Imports: 2 Imported by: 0

README

Memcache-based lock utility in Golang

Build Status GoDoc

Introduction

Simple lock acquire/release functions based on memcache. The library can automatically retry (and wait between attempts) in case of failure to acquire the lock.

Installation

go get github.com/quipo/lock

Sample usage

package main

import (
	"time"
	
	"github.com/bradfitz/gomemcache/memcache"
	"github.com/quipo/lock"
)

func main() {
	var expiryTime int32 = 10           // in seconds
	waitUtime := 250 * time.Millisecond // wait 250ms between two attempts to acquire the lock
	retries := 4                        // retry for 250ms * 4 times = up to 1 seconds 

	// memcache settings
	lockM := lock.Memcache{Prefix: "lock:", Cache: memcache.New("localhost:11211")}


	// attempt acquiring the lock
	acquiredLock := lockM.Acquire("somekey", expiryTime, waitUtime, retries)
	if acquiredLock {
		defer resolver.Lock.Release(cacheKey)
		// do something
	} else {
		// couldn't acquire lock
	}
}

Author

Lorenzo Alberton

See LICENSE document

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Memcache

type Memcache struct {
	Prefix string
	Cache  *memcache.Client
}

func (Memcache) Acquire

func (m Memcache) Acquire(key string, expiryTime int32, waitTime time.Duration, maxTries int) bool

Acquire a lock for the given key. Returns true on success, false on failure. Can attempt up to maxTries times, waiting for waitTime seconds between attempts

func (Memcache) Release

func (m Memcache) Release(key string) error

Release the lock

Jump to

Keyboard shortcuts

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