Go操作redis

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

查看执行结果


image.png
设置过期时间
//设置过期时间
    _, err = conn.Do("expire", "name", 30) //10秒过期
    if err != nil {
        fmt.Println("error: ", err)
        return
    }

查看过期状态


image.png

还剩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)
    }
image.png

查看列表的长度

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)
    }
image.png
哈希操作
    _, 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)
    }

查看结果


image.png
集合操作

···
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))
    }
}

···
查看结果


image.png

其他操作命令大概也是以此类推了,也可以阅读相关文档

你可能感兴趣的:(Go操作redis)