Redigo--用池管理redis连接
来源:互联网 发布:淘宝现在还能做吗 编辑:程序博客网 时间:2024/05/22 12:49
在golang的项目中,若要频繁的用redis(或者其他类似的NoSQL)来存取数据,最好用redigo自带的池来管理连接。
不然的话,每当要操作redis时,建立连接,用完后再关闭,会导致大量的连接处于TIME_WAIT状态(redis连接本质上就是tcp)。
注:TIME_WAIT,也叫TCP半连接状态,会继续占用本地端口。
以下为redis连接池的golang实现:
import ("github.com/garyburd/redigo/redis""github.com/astaxie/beego""time")var (// 定义常量RedisClient *redis.PoolREDIS_HOST stringREDIS_DB int)func init() {// 从配置文件获取redis的ip以及dbREDIS_HOST = beego.AppConfig.String("redis.host")REDIS_DB, _ = beego.AppConfig.Int("redis.db")// 建立连接池RedisClient = &redis.Pool{// 从配置文件获取maxidle以及maxactive,取不到则用后面的默认值MaxIdle: beego.AppConfig.DefaultInt("redis.maxidle", 1),MaxActive: beego.AppConfig.DefaultInt("redis.maxactive", 10),IdleTimeout: 180 * time.Second,Dial: func() (redis.Conn, error) {c, err := redis.Dial("tcp", REDIS_HOST)if err != nil {return nil, err}// 选择dbc.Do("SELECT", REDIS_DB)return c, nil},}}其中,各参数的解释如下:
MaxIdle:最大的空闲连接数,表示即使没有redis连接时依然可以保持N个空闲的连接,而不被清除,随时处于待命状态。
MaxActive:最大的激活连接数,表示同时最多有N个连接
IdleTimeout:最大的空闲连接等待时间,超过此时间后,空闲连接将被关闭
Dial:建立连接
使用连接池时的代码:
// 从池里获取连接rc := RedisClient.Get()// 用完后将连接放回连接池defer rc.Close()以上就是连接池的用法了,很简单吧。
2 0
- Redigo--用池管理redis连接
- Redigo--Go连接Redis
- Redigo--Go连接Redis
- go redis redigo
- redigo长连接/复用
- 用go写的redis proxy 简单的测试redigo
- Redigo---Go版的Redis-client(二 链接池来处理链接)
- Redigo---Go版的Redis-client
- go语言使用redis —— redigo
- redis连接管理
- redigo的redis.Pool 配置参数调优
- Go实战--golang中使用redis(redigo和go-redis/redis)
- 连接池管理连接
- redigo 用户指南
- golang redis连接池
- redis 连接池类
- Redis 连接池配置
- Redis 连接池配置
- Redis源码分析(二十)--- ae事件驱动
- C语言函数名与函数指针详解
- 第9周项目求1!+2!+3!......+10!
- 自定义 ViewGroup 支持无限循环翻页之三(响应回调事件)
- 下沙的沙子有几粒?
- Redigo--用池管理redis连接
- Static的作用
- java类的初始化顺序
- dbo.sp_WhoIsActive
- DedeCMS订阅RSS带图全文输出的修改方法
- jquery.lazyload.js实现图片懒加载
- 第9周项目三输出星号图
- ubuntu-TFTP配置文件
- Lowest Commen Ancensor