-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathstrings_crud_test.go
87 lines (81 loc) · 1.76 KB
/
strings_crud_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package example_test
import (
"context"
red "github.com/goclub/redis"
"log"
"testing"
"time"
)
func TestStringsCRUD(t *testing.T) {
err := func() (err error){
ctx := context.Background()
client, err := NewClient(ctx) ; if err != nil {
return
}
key := "example_strings_crud"
// ----------------
log.Print("DEL")
delTotal, err := red.DEL{
Key: key,
}.Do(ctx, client) ; if err != nil {
return
}
log.Printf("删除%d个key", delTotal)
// ----------------
log.Print("GET")
getReply, getIsNil, err := red.GET{
Key: key,
}.Do(ctx, client) ; if err != nil {
return
}
if getIsNil {
log.Print(key + " 为空")
} else {
log.Print(key + "的内容是", getReply)
}
// ----------------
log.Print("SET EX")
setExReply, setExIsNil, err := red.SET{
Key: key,
Value: "a",
// 20秒有效期
Expire: time.Second * 20,
}.Do(ctx, client) ; if err != nil {
return
}
// set ex 不会 返回 nil
_ = setExIsNil
// set ex 返回的字符串固定是 OK 所以忽略
_ = setExReply
// ----------------
log.Print("SET NX")
setNxReply, setNxIsNil, err := red.SET{
Key: key,
Value: "b",
Expire: time.Second * 20,
NX: true,
}.Do(ctx, client) ; if err != nil {
return
}
if setNxIsNil {
log.Print(key + " 已经存在值,因为配置了 NX 所以值未改变")
} else {
log.Print(key + "set nx 成功")
}
// set nx 返回的字符串固定是 OK 所以忽略
_ = setNxReply
// ----------------
log.Print("GET")
getReply, getIsNil, err = red.GET{Key: key}.Do(ctx, client) ; if err != nil {
return
}
if getIsNil {
log.Print(key + " 为空")
} else {
log.Print(key + "的内容是", getReply)
}
return
}() ; if err != nil {
log.Printf("%+v",err)
}
}