Go Redis连接池
官方包 https://github.com/gomodule/redigo
1、创建配置文件
存放在conf配置文件夹,可以跟你的需要存在相应。
redis.go
package conf
var RedisConf = map[string]string{
"name": "redis",
"type": "tcp",
"address": "127.0.0.1:6379",
"auth": "123456",
}
2、redis连接池
redispool.go 连接池实现
package redis
import (
. "example/example/conf" //改成你自己配置目录
"github.com/garyburd/redigo/redis"
"time"
)
var RedisClient *redis.Pool
func init() {
// 建立连接池
RedisClient = &redis.Pool{
// 从配置文件获取maxidle以及maxactive,取不到则用后面的默认值
MaxIdle: 16, //最初的连接数量
// MaxActive:1000000, //最大连接数量
MaxActive: 0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
IdleTimeout: 300 * time.Second, //连接关闭时间 300秒 (300秒不使用自动关闭)
Dial: func() (redis.Conn, error) { //要连接的redis数据库
c, err := redis.Dial(RedisConf["type"], RedisConf["address"])
if err != nil {
return nil, err
}
if _, err := c.Do("AUTH", RedisConf["auth"]); err != nil {
_=c.Close()
return nil, err
}
return c, nil
},
}
}
使用示例:
package main
import (
"example/example/public/redispool" //改成你自己的redispool.go(redis连接池实现文件)的目录
"fmt"
"github.com/gomodule/redigo/redis"
)
var RedisExpire = 3600 //缓存有效期
func main() {
// 从池里获取连接
rc := redispool.RedisClient.Get()
// 用完后将连接放回连接池
defer rc.Close()
key := "redis.cache"
_, err := rc.Do("Set", key, "1", "EX", RedisExpire)
if err != nil {
fmt.Println(err)
return
}
val, err := redis.String(rc.Do("Get", key))
if err != nil {
fmt.Println(err)
}
fmt.Println(val)
//删除
rc.Do("Del", key)
}
links
- 目录
- 上一节:
- 下一节: