Skip to content

XdpCs/redis-lock

Repository files navigation

redis-lock

GitHub watchers GitHub stars GitHub forks GitHub last commit GitHub repo size GitHub license

Distributed lock based on redis.

redis-lock supports watchdog mechanism in redisson.

install

go get

go get -u github.com/XdpCs/redis-lock

go mod

require github.com/XdpCs/redis-lock latest

example

Error handling is simplified to panic for shorter example.

You can run this program in this directory.

package main

import (
	"context"
	"time"

	redislock "github.com/XdpCs/redis-lock"
	"github.com/redis/go-redis/v9"
)

func main() {
	// init context
	ctx := context.Background()
	// init redis client
	rdb := redis.NewClient(&redis.Options{
		Addr: ":6379",
	})
	// close redis client
	defer rdb.Close()
	// flush redis
	_ = rdb.FlushDB(ctx).Err()
	// init redislock client
	client, err := redislock.NewDefaultClient(rdb)
	if err != nil {
		panic(err)
	}
	// try lock with default parameter
	mutex, err := client.TryLock(ctx, "XdpCs", -1)
	if err != nil {
		panic(err)
	}

	defer func(mutex *redislock.Mutex, ctx context.Context) {
		// unlock mutex
		err := mutex.Unlock(ctx)
		if err != nil {
			panic(err)
		}
	}(mutex, ctx)
	time.Sleep(time.Second * 30)
}

License

redis-lock is under the MIT. Please refer to LICENSE for more information.

About

Distributed lock based on redis.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages