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
}
}
【励志篇】:
古之成大事掌大学问者,不惟有超世之才,亦必有坚韧不拔之志。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步