新版redigo库

新版redigo库地址:github.com/gomodule/redigo/redis

官网链接:https://pkg.go.dev/github.com/gomodule/redigo/redis

目前中文互联网上大部分介绍redigo库用的都是garyburd,而新版已经迁移gomodule中,garyburd现已处于维护状态。

新版redigo库除了地址迁移以外,还有部分改动,比如func NewPool()已被弃用,以及更改了使用密码连接的方式等,这些问题均可在官网上找到答案。

普通连接

package main

import (
	"github.com/gomodule/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "127.0.0.1:6379")
	if err != nil {
		// handle error
	}
	defer c.Close()
}

或者如果需要输入密码

package main

import (
	"github.com/gomodule/redigo/redis"
)

func main() {
	c, err := redis.Dial("tcp", "localhost:6379",
		redis.DialUsername("username"),
		redis.DialPassword("password"),
	)
	if err != nil {
		// handle error
	}
	defer c.Close()
}

连接池

推荐方式
pool := &redis.Pool{
  // Other pool configuration not shown in this example.
  Dial: func () (redis.Conn, error) {
    c, err := redis.Dial("tcp", server)
    if err != nil {
      return nil, err
    }
    if _, err := c.Do("AUTH", password); err != nil {
      c.Close()
      return nil, err
    }

    return c, nil
  },
}
使用newPool连接(已弃用)
func newPool(addr string) *redis.Pool {
  return &redis.Pool{
    MaxIdle: 3,
    IdleTimeout: 240 * time.Second,
    Dial: func () (redis.Conn, error) { return redis.Dial("tcp", addr) },
  }
}

var (
  pool *redis.Pool
  redisServer = flag.String("redisServer", ":6379", "")
)

func main() {
  flag.Parse()
  pool = newPool(*redisServer)
  ...
}

set & get

        _, err = c.Do("Set", "name", "nick")
    if err != nil {
        fmt.Println(err)
        return
    }

   r, err := redis.String(c.Do("Get", "name"))
    if err != nil {
        fmt.Println(err)
        return
    }
    fmt.Println(r) 

使用string类型存储json字符串

set
b, err := json.Marshal(&studentJD)
if err != nil {
    return
}
_, err = conn.Do("SET", "JohnDoe", string(b))
if err != nil {
    return
}
get
objStr, err = Redis.String(conn.Do("GET", "JohnDoe"))
if err != nil {
    return
}
b := []byte(objStr)
student := &Student{}
err = json.Unmarshal(b, student)
if err != nil {
    return
}

旧版redigo库

旧版redigo库地址:github.com/garyburd/redigo/redis

连接

import "github.com/garyburd/redigo/redis"

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

连接池

var pool *redis.Pool  //创建redis连接池
 
func init(){
    pool = &redis.Pool{     //实例化一个连接池
        MaxIdle:16,    //最初的连接数量
        // MaxActive:1000000,    //最大连接数量
        MaxActive:0,    //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
        IdleTimeout:300,    //连接关闭时间 300秒 (300秒不使用自动关闭)    
        Dial: func() (redis.Conn ,error){     //要连接的redis数据库
            return redis.Dial(
            "tcp",
            "localhost:6379")  //redis数据库密码
        },
    }
}
 
func main(){
    c := pool.Get() //从连接池,取一个链接
    defer c.Close() //函数运行结束 ,把连接放回连接池
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐