golang連接redis

連接redis

package main

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    } 

    fmt.Println("redis conn success")

    defer c.Close()
}

執(zhí)行redis語句

package main

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    defer c.Close()
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }
    r, _ := c.Do("set", "name", "mac") //這里寫redis語句
    fmt.Println(r)
    res, _ := redis.String(c.Do("get", "name"))
    fmt.Println(res)
}
package main

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

func main() {
    c, err := redis.Dial("tcp", "localhost:6379")
    defer c.Close()
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }
    c.Send("set", "name", "mac")
    c.Send("set", "age", 18)
    c.Send("get", "name")
    c.Send("get", "age")
    c.Flush()
    res, _ := redis.String(c.Receive())
    fmt.Println(res)
    res, _ = redis.String(c.Receive())
    fmt.Println(res)
    res, _ = redis.String(c.Receive())
    fmt.Println(res)
    res, _ = redis.String(c.Receive())
    fmt.Println(res)

}

publish&subscribe

package main

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

func publish() {
    c2, err := redis.Dial("tcp", "localhost:6379")
    if err != nil {

    }

    for {
        var t string = "現(xiàn)在時間為: "
        t += time.Now().String()

        c2.Do("publish", "bbc", t)
        time.Sleep(time.Second)

    }
}
func main() {

    c, err := redis.Dial("tcp", "localhost:6379")
    defer c.Close()
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }
    psc := redis.PubSubConn{
        Conn: c,
    }
    psc.Subscribe("bbc")
    go publish()
    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:
            return
        }
    }
}

scan用法

func main() {

    c, err := redis.Dial("tcp", "localhost:6379")
    defer c.Close()
    if err != nil {
        fmt.Println("conn redis failed,", err)
        return
    }
    c.Do("mset", "name", "mac", "age", 18)
    reply, _ := redis.Values(c.Do("mget", "name", "age"))
    var age int
    var name string
    redis.Scan(reply, &name, &age)
    fmt.Println(name, age)

}

連接池

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

var pool *redis.Pool  //創(chuàng)建redis連接池

func init(){
    pool = &redis.Pool{     //實例化一個連接池
        MaxIdle:16,    //最初的連接數(shù)量
        // MaxActive:1000000,    //最大連接數(shù)量
        MaxActive:0,    //連接池最大連接數(shù)量,不確定可以用0(0表示自動定義),按需分配
        IdleTimeout:300,    //連接關(guān)閉時間 300秒 (300秒不使用自動關(guān)閉)    
        Dial: func() (redis.Conn ,error){     //要連接的redis數(shù)據(jù)庫
            return redis.Dial("tcp","localhost:6379")
        },
    }
}

func main(){
    c := pool.Get() //從連接池,取一個鏈接
    defer c.Close() //函數(shù)運行結(jié)束 ,把連接放回連接池

        _,err := c.Do("Set","abc",200)
        if err != nil {
            fmt.Println(err)
            return
        }

        r,err := redis.Int(c.Do("Get","abc"))
        if err != nil {
            fmt.Println("get abc faild :",err)
            return
        }
        fmt.Println(r)
        pool.Close() //關(guān)閉連接池
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容