一个简洁的基于 Redis 单节点的分布式锁实现,可以用在多个实例、多个 pods、多个服务之间并发冲突的加锁场景,支持组合锁。
Redis pods
// resource-key 1
lock := NewRedisLock(redisClient, "resource-key", time.Hour * 1)
// 5 1
err := lock.Lock(time.Second * 5, time.Minute * 1)
//
err = lock.Unlock()
// resource1, resource2, resource3 1
lock := NewRedisLockSet(redisClient, []string{"resource1", "resource2", "resource3"}, time.Hour * 1)
// 5 1
err := lock.Lock(time.Second * 5, time.Minute)
//
err = lock.Unlock()
Redis-Lock Redis Redis
Redis Redlock ZooKeeperETCD