• 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()
    }
  • 相关阅读:
    ASP.NET Interview Questions
    [上海]招聘.Net高级软件工程师&BI数据仓库工程师(急)
    访问被拒绝:“microsoft.web.ui.webcontrols”的解决办法
    上海市区广场、商场、大厦中英文对照大全
    文件夹加密码方法
    JavaScript:使用面向对象的技术创建高级 Web 应用程序(转)
    对数据类型而言运算符无效。运算符为 add,类型为 text。
    SQL行列转换
    主成分分析(Principal components analysis)最小平方误差解释
    主成分分析(Principal components analysis)最大方差解释
  • 原文地址:https://www.cnblogs.com/angelyan/p/10687656.html
Copyright © 2020-2023  润新知