Skip to content

Commit 45863fc

Browse files
committed
update README.md
1 parent 064b9da commit 45863fc

File tree

2 files changed

+208
-203
lines changed

2 files changed

+208
-203
lines changed

README-zh.md

Lines changed: 105 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -39,139 +39,142 @@ g := godisson.NewGodisson(rdb, godisson.WithWatchDogTimeout(30*time.Second))
3939

4040
## 示例
4141

42-
### Mutex
42+
43+
### Mutex
4344

4445
```go
45-
package examples
46+
package main
4647

4748
import (
48-
"github.com/cheerego/godisson"
49-
"github.com/go-redis/redis/v8"
50-
"github.com/pkg/errors"
51-
"log"
52-
"time"
49+
"github.com/cheerego/go-redisson"
50+
"github.com/go-redis/redis/v8"
51+
"github.com/pkg/errors"
52+
"log"
53+
"time"
5354
)
5455

5556
func main() {
5657

57-
// create redis client
58-
rdb := redis.NewClient(&redis.Options{
59-
Addr: "localhost:6379",
60-
Password: "", // no password set
61-
DB: 0, // use default DB
62-
})
63-
defer rdb.Close()
58+
// create redis client
59+
rdb := redis.NewClient(&redis.Options{
60+
Addr: "localhost:6379",
61+
Password: "", // no password set
62+
DB: 0, // use default DB
63+
})
64+
defer rdb.Close()
6465

65-
g := godisson.NewGodisson(rdb, godisson.WithWatchDogTimeout(30*time.Second))
66+
g := godisson.NewGodisson(rdb, godisson.WithWatchDogTimeout(30*time.Second))
6667

67-
test1(g)
68-
test2(g)
68+
test1(g)
69+
test2(g)
6970
}
7071

7172
// can't obtain lock in a same goroutine
7273
func test1(g *godisson.Godisson) {
73-
m1 := g.NewMutex("godisson")
74-
m2 := g.NewMutex("godisson")
75-
76-
err := m1.TryLock(-1, 20000)
77-
if errors.Is(err, godisson.ErrLockNotObtained) {
78-
log.Println("can't obtained lock")
79-
} else if err != nil {
80-
log.Fatalln(err)
81-
}
82-
defer m1.Unlock()
83-
84-
// because waitTime = -1, waitTime < 0, try once, will return ErrLockNotObtained
85-
err = m2.TryLock(-1, 20000)
86-
if errors.Is(err, godisson.ErrLockNotObtained) {
87-
log.Println("m2 must not obtained lock")
88-
} else if err != nil {
89-
log.Fatalln(err)
90-
}
91-
time.Sleep(10 * time.Second)
74+
m1 := g.NewMutex("godisson")
75+
m2 := g.NewMutex("godisson")
76+
77+
err := m1.TryLock(-1, 20000)
78+
if errors.Is(err, godisson.ErrLockNotObtained) {
79+
log.Println("can't obtained lock")
80+
} else if err != nil {
81+
log.Fatalln(err)
82+
}
83+
defer m1.Unlock()
84+
85+
// because waitTime = -1, waitTime < 0, try once, will return ErrLockNotObtained
86+
err = m2.TryLock(-1, 20000)
87+
if errors.Is(err, godisson.ErrLockNotObtained) {
88+
log.Println("m2 must not obtained lock")
89+
} else if err != nil {
90+
log.Fatalln(err)
91+
}
92+
time.Sleep(10 * time.Second)
9293
}
9394

9495
func test2(g *godisson.Godisson) {
95-
m1 := g.NewMutex("godisson")
96-
m2 := g.NewMutex("godisson")
97-
98-
go func() {
99-
err := m1.TryLock(-1, 20000)
100-
if errors.Is(err, godisson.ErrLockNotObtained) {
101-
log.Println("can't obtained lock")
102-
} else if err != nil {
103-
log.Fatalln(err)
104-
}
105-
time.Sleep(10 * time.Second)
106-
m1.Unlock()
107-
}()
108-
109-
// waitTime > 0, after 10 milliseconds will obtain the lock
110-
go func() {
111-
time.Sleep(1 * time.Second)
112-
113-
err := m2.TryLock(15000, 20000)
114-
if errors.Is(err, godisson.ErrLockNotObtained) {
115-
log.Println("m2 must not obtained lock")
116-
} else if err != nil {
117-
log.Fatalln(err)
118-
}
119-
time.Sleep(10 * time.Second)
120-
121-
m2.Unlock()
122-
}()
96+
m1 := g.NewMutex("godisson")
97+
m2 := g.NewMutex("godisson")
98+
99+
go func() {
100+
err := m1.TryLock(-1, 20000)
101+
if errors.Is(err, godisson.ErrLockNotObtained) {
102+
log.Println("can't obtained lock")
103+
} else if err != nil {
104+
log.Fatalln(err)
105+
}
106+
time.Sleep(10 * time.Second)
107+
m1.Unlock()
108+
}()
109+
110+
// waitTime > 0, after 10 milliseconds will obtain the lock
111+
go func() {
112+
time.Sleep(1 * time.Second)
113+
114+
err := m2.TryLock(15000, 20000)
115+
if errors.Is(err, godisson.ErrLockNotObtained) {
116+
log.Println("m2 must not obtained lock")
117+
} else if err != nil {
118+
log.Fatalln(err)
119+
}
120+
time.Sleep(10 * time.Second)
121+
122+
m2.Unlock()
123+
}()
124+
time.Sleep(20 * time.Second)
123125

124126
}
125127

128+
126129
```
127130

128131

129132
### RLock
130133
```go
131-
package examples
134+
package main
132135

133136
import (
134-
"github.com/cheerego/godisson"
135-
"github.com/go-redis/redis/v8"
136-
"log"
137-
"time"
137+
"github.com/cheerego/go-redisson"
138+
"github.com/go-redis/redis/v8"
139+
"log"
140+
"time"
138141
)
139142

140143
func main() {
141144

142-
// create redis client
143-
rdb := redis.NewClient(&redis.Options{
144-
Addr: "localhost:6379",
145-
Password: "", // no password set
146-
DB: 0, // use default DB
147-
})
148-
defer rdb.Close()
149-
150-
g := godisson.NewGodisson(rdb, godisson.WithWatchDogTimeout(30*time.Second))
151-
152-
// lock with watchdog without retry
153-
lock := g.NewRLock("godisson")
154-
155-
err := lock.Lock()
156-
if err == godisson.ErrLockNotObtained {
157-
log.Println("Could not obtain lock")
158-
} else if err != nil {
159-
log.Fatalln(err)
160-
}
161-
defer lock.Unlock()
162-
163-
// lock with retry、watchdog
164-
// leaseTime value is -1, enable watchdog
165-
lock2 := g.NewRLock("godission-try-watchdog")
166-
167-
err = lock2.TryLock(20000, -1)
168-
if err == godisson.ErrLockNotObtained {
169-
log.Println("Could not obtain lock")
170-
} else if err != nil {
171-
log.Fatalln(err)
172-
}
173-
time.Sleep(10 * time.Second)
174-
defer lock.Unlock()
145+
// create redis client
146+
rdb := redis.NewClient(&redis.Options{
147+
Addr: "localhost:6379",
148+
Password: "", // no password set
149+
DB: 0, // use default DB
150+
})
151+
defer rdb.Close()
152+
153+
g := godisson.NewGodisson(rdb, godisson.WithWatchDogTimeout(30*time.Second))
154+
155+
// lock with watchdog without retry
156+
lock := g.NewRLock("godisson")
157+
158+
err := lock.Lock()
159+
if err == godisson.ErrLockNotObtained {
160+
log.Println("Could not obtain lock")
161+
} else if err != nil {
162+
log.Fatalln(err)
163+
}
164+
defer lock.Unlock()
165+
166+
// lock with retry、watchdog
167+
// leaseTime value is -1, enable watchdog
168+
lock2 := g.NewRLock("godission-try-watchdog")
169+
170+
err = lock2.TryLock(20000, -1)
171+
if err == godisson.ErrLockNotObtained {
172+
log.Println("Could not obtain lock")
173+
} else if err != nil {
174+
log.Fatalln(err)
175+
}
176+
time.Sleep(10 * time.Second)
177+
defer lock.Unlock()
175178
}
176179

177180
```

0 commit comments

Comments
 (0)