zoukankan      html  css  js  c++  java
  • golang中使用Redis

    一.golang中安装Redis

    github地址:https://github.com/garyburd/redigo

    文档地址:http://godoc.org/github.com/garyburd/redigo/redis

    安装:

    go get github.com/garyburd/redigo/redis

    二.简单连接Redis

    conn

    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
        }
    
        defer c.Close()
    }

    hset

    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
        }
    
        defer c.Close()
        _, err = c.Do("HSet", "books", "abc", 100)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        r, err := redis.Int(c.Do("HGet", "books", "abc"))
        if err != nil {
            fmt.Println("get abc failed,", err)
            return
        }
    
        fmt.Println(r)
    }

    list

    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
        }
    
        defer c.Close()
        _, err = c.Do("lpush", "book_list", "abc", "ceg", 300)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        r, err := redis.String(c.Do("lpop", "book_list"))
        if err != nil {
            fmt.Println("get abc failed,", err)
            return
        }
    
        fmt.Println(r)
    }

    set

    package main
    
    import (
        "fmt"
    
        "github.com/garyburd/redigo/redis"
    )
    
    func main() {
        var p *int
        var a int
        p = &a
        *p = 0
    
        c, err := redis.Dial("tcp", "localhost:6379")
        if err != nil {
            fmt.Println("conn redis failed,", err)
            return
        }
    
        defer c.Close()
        _, err = c.Do("Set", "abc", 100)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        r, err := redis.Int(c.Do("Get", "abc"))
        if err != nil {
            fmt.Println("get abc failed,", err)
            return
        }
    
        fmt.Println(r)
    }

    batch_set

    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
        }
    
        defer c.Close()
        _, err = c.Do("MSet", "abc", 100, "efg", 300)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        r, err := redis.Ints(c.Do("MGet", "abc", "efg"))
        if err != nil {
            fmt.Println("get abc failed,", err)
            return
        }
    
        for _, v := range r {
            fmt.Println(v)
        }
    }

    过期设置

    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
        }
    
        defer c.Close()
        _, err = c.Do("expire", "abc", 10)
        if err != nil {
            fmt.Println(err)
            return
        }
    }

    连接池

    package main
    
    import (
        "fmt"
    
        "github.com/garyburd/redigo/redis"
    )
    
    var pool *redis.Pool
    
    func init() {
        pool = &redis.Pool{
            MaxIdle:     16,
            MaxActive:   0,
            IdleTimeout: 300,
            Dial: func() (redis.Conn, error) {
                return redis.Dial("tcp", "localhost:6379")
            },
        }
    }
    
    func main() {
    
        c := pool.Get()
        defer c.Close()
    
        _, err := c.Do("Set", "abc", 100)
        if err != nil {
            fmt.Println(err)
            return
        }
    
        r, err := redis.Int(c.Do("Get", "abc"))
        if err != nil {
            fmt.Println("get abc failed,", err)
            return
        }
    
        fmt.Println(r)
        pool.Close()
    }
  • 相关阅读:
    转:Node.js邮件发送组件- Nodemailer 1.0发布
    USACO 5.4 Betsy's Tour(暴力)
    USACO 5.4 Character Recognition(DP)
    Codeforces Round #196 (Div. 2)
    HDU 4681 String(DP)
    HDU 4679 Terrorist’s destroy
    HDU 4669 Mutiples on a circle(环状DP)
    HDU 4666 Hyperspace(曼哈顿距离)
    HDU 2852 KiKi's K-Number(离线+树状数组)
    POJ 3335 Rotating Scoreboard(多边形的核)
  • 原文地址:https://www.cnblogs.com/angelyan/p/10687656.html
Copyright © 2011-2022 走看看