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"))

results matching ""

    No results matching ""