Go with the language of the operating redis

Go with the language of the operating redis

go language redis redis need to download the official Kit

In go_path execution path: go get github.com/garyburd/redigo/redis
If you can not install the git go behind the link to download a zip package, then extract to a local path on it gopath

gopath path if you do not know it to look at the environment variable configuration parameters, can often visible

Of course there are tools on redis more than this kind, there is not one by one example, that the most important thing is your understanding of the foundation and redis command
redis official documents Address: http://redisdoc.com/string/index.html

Simple example

package main

import (
    "fmt"

    "github.com/garyburd/redigo/redis"
)

func string() {
    //通过go向redis 写入数据和读取数据
    //1. 链接到go
    conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println("reis connect err=", err)
        return
    }
    defer conn.Close()
    //2. 通过go向redis写入数据 string[key-val]
    _, err = conn.Do("Set", "name", "tom猫")
    if err != nil {
        fmt.Printf("Set err=%v \n", err)
    }

    //3. 从redis读取数据

    r, err := redis.String(conn.Do("Get", "name"))
    if err != nil {
        fmt.Println("get err=", err)
        return
    }

    //name, ok := r.(string)
    fmt.Println("name:", r)
}

func main() {
    //其实都是操作命令  熟练使用redis的命令基本上就会了
    //fixme redis 文档地址:  http://redisdoc.com/string/index.html
    //string()
    //hash()
    //list()
    subscribe()
}
func subscribe() {
    c, err := redis.Dial("tcp", "127.0.0.1:6379")
    if err != nil {
        fmt.Println(err)
        return
    }
    defer c.Close()

    psc := redis.PubSubConn{c}
    psc.Subscribe("redChatRoom")
    for {
        switch v := psc.Receive().(type) {
        case redis.Message:
            fmt.Printf("%s: message: %s\n", v.Channel, v.Data)
        case redis.Subscription:
            fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count)
        case error:
            fmt.Println(v)
            return
        }
    }
}

func list() {
    //1.连接到redis数据库
    conn,err :=redis.Dial("tcp","127.0.0.1:6379")
    if err != nil{
        fmt.Println("redis连接失败,错误信息:",err)
        return
    }
    defer conn.Close()
    fmt.Println("redis连接成功")

    //_, err = conn.Do("LPush", "heroList", "songjiang", 23, "long", 29)
    //if err != nil {
    //  fmt.Println(err)
    //  return
    //}
    //fmt.Println("LPush success")


    //values, _ := redis.Values(conn.Do("lrange", "heroList", "0", "100"))
    str, err := redis.String(conn.Do("RPop", "heroList"))
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(str)
    //for _, v := range values {
    //  fmt.Println(v)
    //}

    // 或者
    //var v1 string
    //redis.Scan(values, &v1)
    //fmt.Println(v1)
}

func hash() {
    ////通过go向redis 写入数据和读取数据
    ////1. 链接到go
    //conn, err := redis.Dial("tcp", "127.0.0.1:6379")
    //if err != nil {
    //  fmt.Println("reis connect err=", err)
    //  return
    //}
    //fmt.Println("-----------")
    //
    //defer conn.Close()
    //2. 通过go向redis写入数据 string[key-val]
    //_, err = conn.Do("HSet", "user", "name", "john")
    //if err != nil {
    //  fmt.Printf("Set err=%v \n", err)
    //}
    //_, err = conn.Do("HSet", "user", "age", 18)
    //if err != nil {
    //  fmt.Printf("Set err=%v \n", err)
    //}
    //_, err = conn.Do("HSet", "user", "gender", "boy")
    //if err != nil {
    //  fmt.Printf("Set err=%v \n", err)
    //}
    //
    ////3. 从redis读取数据
    //
    //r, err := redis.String(conn.Do("HGet", "user", "name"))
    //if err != nil {
    //  fmt.Println("get err=", err)
    //  return
    //}
    //
    ////name, ok := r.(string)
    //fmt.Println("name:", r)

    /*
    批量操作
     */
    //1.连接到redis数据库
    con,err :=redis.Dial("tcp","127.0.0.1:6379")
    if err != nil{
        fmt.Println("redis连接失败,错误信息:",err)
        return
    }
    defer con.Close()
    fmt.Println("redis连接成功")

    //2.通过go向redis写入数据
    _,err = con.Do("HMSet","user2","name","Bob大米","age","19")
    if err != nil{
        fmt.Println("hmset出错,错误信息:",err)
        return
    }

    fmt.Println("hmset ok")

    //3.通过go向redis读取数据
    reply,err := redis.Strings(con.Do("HMGet","user2","name","age"))
    if err != nil{
        fmt.Println("hmget出错,错误信息:",err)
        return
    }
    fmt.Println("hmget ok")

    for i,v := range reply{
        fmt.Printf("[%d]=%s\t",i,v)
    }

}

Create a connection pool redis

package main

import (
    "fmt"
    
    "github.com/garyburd/redigo/redis"
)

var pool *redis.Pool
func init()  {
    pool = &redis.Pool{
        MaxIdle:8,// 最大空闲链接
        MaxActive:0,// 表示和数据库的最大连接数
        IdleTimeout:100,// 最大空闲时间
        Dial: func() (redis.Conn, error) {
            return redis.Dial("tcp", "localhost:6379")
        },
    }
}

func main() {
    //先从pool 取出一个链接
    conn := pool.Get()
    defer conn.Close()

    //
    _, err := conn.Do("Set", "name", "hiram~")
    if err != nil {
        fmt.Println(err)
        return
    }

    r, err := redis.String(conn.Do("Get", "name"))
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(r)

}

Guess you like

Origin www.cnblogs.com/hirampeng/p/11220988.html