新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言
创新互联是一家专注于网站制作、成都网站设计与策划设计,潍城网站建设哪家好?创新互联做网站,专注于网站建设十多年,网设计领域的专业建站公司;建站业务涵盖:潍城等地区。潍城做网站价格咨询:18982081108最近在用 golang 做一些 redis 相关的操作,选用了 redigo 这个第三方库。然后在使用 Pub/Sub 的时候,却发现了一个小坑……
Redis Client
首先,我们来初始化一个带连接池的 Redis Client:
import ( "github.com/gomodule/redigo/redis" ) type RedisClient struct { pool *redis.Pool } func NewRedisClient(addr string, db int, passwd string) *RedisClient { pool := &redis.Pool{ MaxIdle: 10, IdleTimeout: 300 * time.Second, Dial: func() (redis.Conn, error) { c, err := redis.Dial("tcp", addr, redis.DialPassword(passwd), redis.DialDatabase(db)) if err != nil { 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 }, } log.Printf("new redis pool at %s", addr) client := &RedisClient{ pool: pool, } return client }