/
main.go
82 lines (73 loc) · 1.54 KB
/
main.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
package main
import (
"flag"
"fmt"
"github.com/go-redis/redis"
"os"
"time"
)
func NewClient(address string) *redis.Client {
client := redis.NewClient(&redis.Options{
Addr: address,
Password: "", // no password set
DB: 0, // use default DB
})
_, err := client.Ping().Result()
if err != nil {
panic(err)
}
return client
}
func main() {
var address = flag.String("host", "", "hostname:port")
var getKey = flag.String("get", "", "get key")
var deleteKey = flag.String("del", "", "delete key")
var putKey = flag.String("putKey", "", "put key")
var putValue = flag.String("putValue", "", "put value")
var scan = flag.Bool("scan", false, "get all key")
flag.Parse()
if *address == "" {
flag.PrintDefaults()
os.Exit(0)
}
client := NewClient(*address)
if *scan {
var cursor uint64
var n int
for {
var keys []string
var err error
keys, cursor, err = client.Scan(cursor, "*", 0).Result()
if err != nil {
panic(err)
}
n += len(keys)
for c := 0; c < len(keys); c++ {
fmt.Println(keys[c])
}
if cursor == 0 {
break
}
}
fmt.Printf("found %d keys\n", n)
} else if *getKey != "" {
val, err := client.Get(*getKey).Result()
if err != nil {
panic(err)
}
fmt.Println(val)
} else if *deleteKey != "" {
_, err := client.Del(*deleteKey).Result()
if err != nil {
panic(err)
}
} else if *putKey != "" && *putValue != "" {
_, err := client.Set(*putKey, *putValue, time.Hour*24).Result()
if err != nil {
panic(err)
}
} else {
flag.PrintDefaults()
os.Exit(0)
}
}