-
Notifications
You must be signed in to change notification settings - Fork 0
/
sea.go
95 lines (77 loc) · 1.71 KB
/
sea.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
88
89
90
91
92
93
94
95
package sea
import (
"log"
// "strconv"
"github.com/mediocregopher/radix.v2/pool"
"github.com/mediocregopher/radix.v2/redis"
)
type DbOp interface {
//clear all users
//ClearUsers() error
//check if user is existed
UserExisted(id string) bool
//add a user
AddUser(id string, v *map[string]string) error
//get user all info
GetUserAll(id string) (v *map[string]string, err error)
//get user specific info
//GetUserInfo(id string) (info string, err error)
//delete a user
DeleteUser(id string) error
}
type SeaClient struct {
p *pool.Pool
cli *redis.Client
}
var NAMESPACE_XUEQIU_USER = "com.xueqiu:user:"
func getID(id string) string {
return NAMESPACE_XUEQIU_USER + id
}
//methods
//create a new client
func NewSeaClient() (sea *SeaClient, err error) {
sea = &SeaClient{}
sea.p, err = pool.New("tcp", "localhost:6379", 8)
if err != nil {
log.Fatalln(err.Error())
return nil, err
}
sea.cli, err = sea.p.Get()
if err != nil {
//log.
return nil, err
}
return sea, nil
}
//close the connection
func (sc *SeaClient) Close() {
sc.p.Put(sc.cli)
}
//interfaces
func (sc *SeaClient) UserExisted(id string) (b bool) {
ret, err := sc.cli.Cmd("EXISTS", getID(id)).Int()
if err != nil {
log.Fatalln(err)
return false
}
if ret == 1 {
return true
}
return false
}
func (sc *SeaClient) AddUser(id string, v *map[string]string) (err error) {
ar := []string{getID(id)}
for kk, vv := range *v {
ar = append(ar, kk, vv)
}
sc.cli.Cmd("HMSET", ar)
return
}
func (sc *SeaClient) GetUserAll(id string) (v *map[string]string, err error) {
m, err := sc.cli.Cmd("HGETALL", getID(id)).Map()
return &m, err
}
func (sc *SeaClient) DeleteUser(id string) (err error) {
sc.cli.Cmd("DEL", getID(id))
return
}