redis的client有好多好多,go语言的client在redis官方有两个推荐,radix和redigo
我们使用 redigo作为例子
redis连接操作
conn,err := redis.Dial("tcp","127.0.0.1:6379")
defer conn.Close()
if err != nil {
log.Fatal("redis connect fail!")
}
redis有 字符串,列表,字典,集合,有序集合 这几种类型
使用redigo操作和直接命令操作大同小异
set操作
ret ,err := conn.Do("set","golang",true)
get操作
ret1 ,err := conn.Do("get","golang")
if err != nil {
log.Println(err)
}
fmt.Println(string(ret1.([]byte)))
hmset
命令 hashkey,key1,val1,key2,val2
conn.Do("hmset","person1","sex","man","name","zhangsan")
hgetall
ret2,err := conn.Do("hgetall","person1")
if err != nil {
log.Println(err)
}
fmt.Printf("%s\n",ret2)
打印 [sex man name zhangsan]
lpush,lrange
conn.Do("lpush","list1",1)
conn.Do("lpush","list1",2)
ret3,err := conn.Do("lrange","list1",0,-1)
if err != nil {
log.Println(err)
}
所有的命令和redis在控制台输入差不多
使用values赋值
reply,err :=redis.Values(conn.Do("lrange","list1",0,-1))
可以使用for 循环输出
for _,v := range reply {
fmt.Println(string(v.([]byte)))
}
也可以使用 Scan
val,_ := redis.Scan(reply)
打印
[[50] [49]] //[1,2]
使用管道
conn.Send("SET","name","sansan")
conn.Send("GET","name")
conn.Flush()
conn.Receive()
reply2,err := conn.Receive()
fmt.Println(string(reply2.([]byte)))
Receive() 调用两遍,第二遍返回的才是 GET 命令返回的结果
附上 redigo 的文档