go操作redis就直接简单粗暴了,直接使用的是redis原生操作命令
简单的string操作
package main
import (
"fmt"
"github.com/garyburd/redigo/redis"
)
func main() {
conn,err := redis.Dial("tcp","127.0.0.1:6379")
if err != nil {
fmt.Println("connect redis error :",err)
return
}
defer conn.Close()
//设置值
_, err = conn.Do("SET", "name", "Jinanav")
if err != nil {
fmt.Println("error:", err)
}
//获取值
name, err := redis.String(conn.Do("GET", "name"))
if err != nil {
fmt.Println("error:", err)
} else {
fmt.Printf("My name is: %s \n", name)
}
}
查看执行结果
设置过期时间
//设置过期时间
_, err = conn.Do("expire", "name", 30) //10秒过期
if err != nil {
fmt.Println("error: ", err)
return
}
查看过期状态
还剩25秒过期
列表操作
//列表操作 左入队
_, err = conn.Do("LPUSH", "test", "one","two","three")
if err != nil {
fmt.Println("redis mset error:", err)
}
//左出队 左进左出
res, err := redis.String(conn.Do("LPOP", "test"))
if err != nil {
fmt.Println("error:", err)
} else {
res_type := reflect.TypeOf(res)
fmt.Printf("res type : %s \n", res_type)
fmt.Printf("res : %s \n", res)
}
查看列表的长度
res, err := conn.Do("LLEN", "test")
if err != nil {
fmt.Println("error:", err)
} else {
res_type := reflect.TypeOf(res)
fmt.Printf("res type : %s \n", res_type)
fmt.Printf("res : %d \n", res)
}
哈希操作
_, err = conn.Do("HSET", "student","age",18)
if err != nil {
fmt.Println("set error:", err)
}
res, err := redis.Int64(conn.Do("HGET", "student","age"))
if err != nil {
fmt.Println("get error:", err)
} else {
res_type := reflect.TypeOf(res)
fmt.Printf("res type : %s \n", res_type)
fmt.Printf("res : %d \n", res)
}
查看结果
集合操作
···
v, err := redis.Int64(conn.Do("SADD", "testset", "我加入到集test啦"))
if err != nil {
log.Println("error:", err)
return
}
log.Println("value:", v)
//读取集合
list_set, err := redis.Values(conn.Do("SMEMBERS", "testset"))
if err != nil {
fmt.Println("获取test_set集合中的值失败:", err)
}
for _, v := range list_set {
if str, ok := v.([]uint8); ok {
fmt.Println("testset:", string(str))
}
}
···
查看结果
其他操作命令大概也是以此类推了,也可以阅读相关文档