package goredislock import ( "context" "github.com/redis/go-redis/v9" "sync" "testing" "time" ) func Test_blockingLock(t *testing.T) { // 请输入 redis 节点的地址和密码 addr := "192.168.8.1:6379" passwd := "" client := redis.NewClient(&redis.Options{ Addr: addr, Password: passwd, }) lock1 := NewRedisLock(client, "mylock", WithExpireTime(3)) lock2 := NewRedisLock(client, "mylock", WithBlock()) ctx := context.Background() var wg sync.WaitGroup wg.Add(1) go func() { defer wg.Done() if err := lock1.Lock(ctx); err != nil { t.Error(err) return } }() wg.Add(1) go func() { defer wg.Done() if err := lock2.Lock(ctx); err != nil { t.Error(err) return } time.Sleep(20 * time.Second) if err := lock2.Unlock(ctx); err != nil { t.Error(err) } }() wg.Wait() t.Log("success") }