一、Go操作Redis

redis第3方库

1
go get github.com/garyburd/redigo/redis

连接redis

1
2
3
4
5
6
7
8
9
10
11
12
13
14
func main() {
//1.建立连接
conn, err := redis.Dial("tcp",
"127.0.0.1:6379",
redis.DialPassword("123456"))
if err != nil {
fmt.Println("redis.Dial err=", err)
return
}
defer conn.Close()
//GetString(conn)
//GetHash(conn)
//GetMHash(conn)
}

操作string

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
func GetString(conn redis.Conn){
//2. 通过go向redis写入数据
_, err := conn.Do("Set", "name", "tom")
if err != nil {
fmt.Println("set err=", err)
return
}

//返回的结果是interface{}
name, err := redis.String(conn.Do("Get", "name"))
if err != nil {
fmt.Println("set err=", err)
return
}
fmt.Println("Get name=", name)
}

操作hash

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
func GetHash(conn redis.Conn){
//2. 通过go向redis写入数据
_, err := conn.Do("HSet", "user01", "name", "tom")
if err != nil {
fmt.Println("HSet err=", err)
return
}
_, err = conn.Do("HSet", "user01", "age", 1)
if err != nil {
fmt.Println("HSet err=", err)
return
}

//返回的结果是interface{}
name, err := redis.String(conn.Do("HGet", "user01", "name"))
if err != nil {
fmt.Println("HSet err=", err)
return
}
age, err := redis.Int(conn.Do("HGet", "user01", "age"))
if err != nil {
fmt.Println("HSet err=", err)
return
}
fmt.Printf("HGet name=%v, age=%v\n", name, age)
}

批量操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//批量操作
func GetMHash(conn redis.Conn){
//2. 通过go向redis写入数据
_, err := conn.Do("HMSet", "user02",
"name", "tom",
"age", 18)
if err != nil {
fmt.Println("HMSet err=", err)
return
}

//返回的结果是interface{}
r, err := redis.Strings(conn.Do("HMGet", "user01", "name", "age"))
if err != nil {
fmt.Println("HMGet err=", err)
return
}
for i, v := range r{
fmt.Printf("HMGet r[%d]=%s\n", i, v)
}
}

redis连接池

1
2
3
4
5
6
7
8
9
10
pool = & redis.Pool{
MaxIdle: 8, //最大空闲连接数
MaxActive: 0, //数据库最大连接数, 0表示没有限制
IdleTimeout: 100, //最大空闲时间
Dial: func() (redis.Conn, error) {
return redis.Dial("tcp",
"127.0.0.1:6379",
redis.DialPassword("123456"))
},
}