1.1.1. 一、redis的go客户端的选择:
点击 http://www.redis.cn/clients.html#go 查看redis的客户端 。可以看到go语言的推荐客户端有Radix、Redigo。这里我选择Redigo。
1.1.2. 二、安装客户端。
go get github.com/gomodule/redigo/redis
1.1.3. 三、客户端的简单使用。
1、操作redis的String类型:
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
func main() {
// 连接到 redis,连接密码是 123456
conn, err := redis.Dial("tcp", "192.168.1.10:6379",
redis.DialPassword("123456"))
if err != nil {
fmt.Println("连接redis失败",err)
return
}
defer conn.Close() //延迟关闭连接
fmt.Println("连接 redis success ...")
//相当于在redis执行命令:Set stuName 张三
_, err = conn.Do("Set", "stuName", "张三")
if err != nil {
fmt.Println("Set 失败",err)
return
}
//相当于在redis执行命令:Get stuName
// 并且把返回值转换为 String
reply, err := redis.String(conn.Do("Get", "stuName"))
if err != nil {
fmt.Println("Get 失败",err)
return
}
fmt.Println("返回结果reply=",reply) //返回结果reply= 张三
}
说明:
1、获取连接:
conn, err := redis.Dial("tcp", "192.168.1.10:6379", redis.DialPassword("123456"))
2、关闭连接:
defer conn.Close()
3、执行redis命令:
_, err = conn.Do("Set", "stuName", "张三")
4、执行redis命令,并且把返回值转换为String:
reply, err := redis.String(conn.Do("Get", "stuName"))
2、一次 设置/取出 多个键值对。
//相当于在redis执行命令:"MSet name 张三 age 23 sex 男"
_, err = conn.Do("MSet", "name","张三","age",23,"sex","男")
if err != nil {
fmt.Println("MSet 失败",err)
return
}
//相当于在redis执行命令:"MGet name age sex" 并且把返回值转换为 String切片
reply, err := redis.Strings(conn.Do("MGet", "name","age","sex"))
if err != nil {
fmt.Println("MGet 失败",err)
return
}
// 返回结果reply= [张三 23 男]
fmt.Println("返回结果reply=",reply)
注意取出多个返回值使用 redis.Strings转换:
reply, err := redis.Strings(conn.Do("MGet", "name","age","sex")
3、操作redis的Hash类型:
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
func main() {
// 连接到 redis,连接密码是 123456
conn, err := redis.Dial("tcp", "192.168.1.10:6379",
redis.DialPassword("123456"))
if err != nil {
fmt.Println("连接redis失败",err)
return
}
defer conn.Close() //延迟关闭连接
fmt.Println("连接 redis success ...")
//相当于在redis执行命令:"HSet user01 name 张三"
_, err = conn.Do("HSet", "user01","name","张三")
if err != nil {
fmt.Println("HSet 失败",err)
return
}
//相当于在redis执行命令:HGet user01 name 并且把返回值转换为 String
reply, err := redis.String(conn.Do("HGet", "user01","name"))
if err != nil {
fmt.Println("HGet 失败",err)
return
}
fmt.Println("返回结果reply=",reply)
}
说明:和string操作一样,只不过执行redis的命令不同而已。
4、给数据设置有效时间:
_, err = c.Do("expire", "name", 10)
给 name 数据设置有效时间为 10s
5、操作 List:
_, err = c.Do("lpush", "heroList", "no1:宋江", 30, "no2:卢俊义", 28)
r, err := redis.String(c.Do("rpop", "heroList"))