Go语言Redis

1.安装

go get github.com/garyburd/redigo/redis

2.示例

package main

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

func main()  {
    c, err := redis.Dial("tcp", "192.168.226.137:6379")
    if err != nil {
	fmt.Println("conn redis failed", err)
	return
    }
    defer c.Close()
    // 设置缓存时间
    // c.Do("expire", "token, 10)
    _, err = c.Do("AUTH", "password")
    if err != nil {
	c.Close()
	return
    }
    _, err = c.Do("Set", "name", "lucy")
    // c.Do("HSet", "personInfo", "name", "jack")
    // c.Do("HSet", "personInfo", "age", 23)
    // c.Do("MSet", "name", "tom", "age", 4)
    // c.Do("lpush", "bookList", "红楼梦", "三国演义", "西游记")
    if err != nil {
	fmt.Println("Set data to redis failed", err)
	return
    }
    r, err := redis.String(c.Do("Get", "name"))
    // fmt.Println(redis.Int(c.Do("HGet", "personInfo", "age")))
    // fmt.Println(redis.StringMap(c.Do("HGetAll", "personInfo")))
    // c.Do("MGet", "name", "age")
    // c.Do("lpop", "bookList")  // 每次取出一个数据
    if err != nil {
	fmt.Println("Get data from redis failed", err)
	return
    }
    fmt.Println(r)
}

3.连接池示例

package main

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

func newPool(server, password string) *redis.Pool {
    return &redis.Pool{
	// 与redis建立连接
	Dial: func() (conn redis.Conn, err error) {
	    conn, err = redis.Dial("tcp", server)
	    if err != nil {
		return nil, err
	    }
	    if _, err = conn.Do("AUTH", password); err != nil {
		conn.Close()
		return nil, err
	    }
	    return conn, err
	},
	// 测试连接是否可用
	TestOnBorrow: func(c redis.Conn, t time.Time) error {
	    if time.Since(t) < time.Minute{
		return nil
	    }
	    _, err := c.Do("PING")
	    return err
        },
	MaxIdle:         64,  // 空闲时连接数量
	MaxActive:       1000,  // 连接上线
	IdleTimeout:     240 * time.Second,  // 空闲连接超时时间
	Wait:            false,
	// Close connections older than this duration
	MaxConnLifetime: 0,
    }
}

var pool *redis.Pool

func main()  {
    pool = newPool("192.168.226.137:6379", "password")
    conn := pool.Get()  // 获取一个连接
    conn.Do("Set", "name", "zhangsan")
    value, err := redis.String(conn.Do("Get", "name"))
    if err != nil {
	fmt.Println("Get value failed:", err)
	return
    }
    fmt.Println(value)
}
posted @ 2022-10-13 20:53  fatpuffer  阅读(41)  评论(0)    收藏  举报