go-redis

go-redis初始化

1.创建连接池
import "github.com/gomodule/redigo/redis"

var RedisPool *redis.Pool

func init() {

	RedisPool = &redis.Pool{
		MaxIdle:     5,                 // idle的列表长度, 空闲的线程数
		MaxActive:   0,                 // 线程池的最大连接数, 0表示没有限制
		Wait:        true,              // 当连接数已满,是否要阻塞等待获取连接。false表示不等待,直接返回错误。
		IdleTimeout: 200 * time.Second, //最大的空闲连接等待时间,超过此时间后,空闲连接将被关闭
		Dial: func() (redis.Conn, error) { // 创建链接
			c, err := redis.Dial("tcp", beego.AppConfig.String("redis_addr"))
			if err != nil {
				return nil, err
			}
			if _, err := c.Do("AUTH", beego.AppConfig.String("redis_password")); err != nil {
				c.Close()
				return nil, err
			}
			if _, err := c.Do("SELECT", beego.AppConfig.String("redis_index")); err != nil {
				c.Close()
				return nil, err
			}
			return c, nil
		},
		TestOnBorrow: func(c redis.Conn, t time.Time) error { //一个测试链接可用性
			if time.Since(t) < time.Minute {
				return nil
			}
			_, err := c.Do("PING")
			return err
		},
	}
	//fmt.Println("Redis init on port ", beego.AppConfig.String("redis_addr"))
}
2.RedisPool简单使用
// get
func GetKey(key string) (string, error) {
	rds := RedisPool.Get()
	defer rds.Close()
	return redis.String(rds.Do("GET", key))
}

// set expires为0时,表示永久性存储
func SetKey(key, value interface{}, expires int) error {
	rds := RedisPool.Get()
	defer rds.Close()
	if expires == 0 {
		_, err := rds.Do("SET", key, value)
		return err
	} else {
		_, err := rds.Do("SETEX", key, expires, value)
		return err
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值