golang 使用 Redis 连接池

package cache

import (
	"3tee_admin/conf"
	"fmt"
	"time"

	"github.com/gomodule/redigo/redis"
	redigo "github.com/gomodule/redigo/redis"
)

var redisPool *redis.Pool

func init() {
	redisPool = PoolInitRedis(fmt.Sprintf("%v:%v", conf.Conf.Redis.Ip, conf.Conf.Redis.Port), conf.Conf.Redis.Password)
}

func PoolInitRedis(server string, password string) *redigo.Pool {
	return &redigo.Pool{
		MaxIdle:     2,
		IdleTimeout: 240 * time.Second,
		MaxActive:   3,
		Dial: func() (redigo.Conn, error) {
			c, err := redigo.Dial("tcp", server)
			if err != nil {
				return nil, err
			}
			if password != "" {
				if _, err := c.Do("AUTH", password); err != nil {
					c.Close()
					return nil, err
				}
			}
			return c, err
		},
		TestOnBorrow: func(c redigo.Conn, t time.Time) error {
			_, err := c.Do("PING")
			return err
		},
	}
}

func Set(key string, value interface{}) error {
	_, err := redisPool.Get().Do("SET", key, value)
	if err != nil {
		return err
	}
	_, err = redisPool.Get().Do("EXPIRE", key, conf.Conf.Redis.TokenExpiresTime)
	return err
}

func GetInt(key string) (int, error) {
	id, err := redigo.Int(redisPool.Get().Do("GET", key))
	return id, err
}

func Del(key string) error {
	_, err := redisPool.Get().Do("DEL", key)
	return err
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值