/lock

memcached-based lock

Primary LanguageGoMIT LicenseMIT

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