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()
    }
  • 相关阅读:
    T Fiddler 教程 _转
    领域模型驱动设计(Domain Driven Design)入门概述 -----DDD 解释
    VS清除打开项目时的TFS版本控制提示
    C#设计模式_转
    CentOS6.5菜鸟之旅:安装Realtek无线网卡驱动
    CentOS6.5菜鸟之旅:安装输入法(小呀小企鹅)
    CentOS6.5菜鸟之旅:U盘安装CentOS64位
    JS魔法堂:属性、特性,傻傻分不清楚
    .Net魔法堂:发个带附件的邮件
    JS魔法堂:那些困扰你的DOM集合类型
  • 原文地址:https://www.cnblogs.com/angelyan/p/10687656.html
Copyright © 2011-2022 走看看