func acquireLock(client *redis.Client) bool { _, err := client.Watch(DIST_LOCK) if err != nil { log.Fatalf("Error watching distributed lock key. ERR: %+v", err) return false } value, err := client.Get(DIST_LOCK).Int64() if err != nil { log.Fatalf("Error getting distributed lock key. ERR: %+v", err) return false } if value == ACQUIRED { return false } multi := client.Multi() _, err = multi.Exec(func() error { err := multi.Set(DIST_LOCK, ACQUIRED, 0).Err() if err != nil { log.Fatalf("Error setting distributed lock key. ERR: %+v", err) return err } return nil }) if err != nil { log.Fatalf("Error executing the set distributed lock key. ERR: %+v", err) return false } return true }