GO中redis(gomodule/redigo库)的简单使用(包括如何使用密码登录)
目前中文互联网上大部分介绍redigo库用的都是garyburd,而新版已经迁移到gomodule中,garyburd现已处于维护状态。新版redigo库除了地址迁移以外,还有部分改动,比如已被弃用,以及更改了使用密码连接的方式等,这些问题均可在官网上找到答案。......
·
新版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() //函数运行结束 ,把连接放回连接池
}
更多推荐
已为社区贡献13条内容
所有评论(0)