• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

GOredis(gomodule/redigo库)的使用(包括使用密码登录)

武飞扬头像
秋叶原の黑猫
帮助1

新版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() //函数运行结束 ,把连接放回连接池
}
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgekkfk
系列文章
更多 icon
同类精品
更多 icon
继续加载