Golang成长之路:操作redis

tech2024-04-22  150

golang操作redis的库也比较多,主要有以下几种:

go get github.com/alphazero/Go-Redis go get github.com/simonz05/godis go get github.com/garyburd/redigo go get github.com/gosexy/redis go get cgl.tideland.biz/redis

不过我使用的还是redisgo,因为这个是官方推荐的,并且使用人数最多。

 

一、安装redisgo

go get github.com/garyburd/redigo/redis

 

二、使用连接池方式连接redis

package redis import ( "github.com/garyburd/redigo/redis" "golang-api/config"//自己编写的配置包 "time" "strconv" "fmt" ) var ( Pool *redis.Pool ) func Conn(configName string) (redis.Conn){ getConn(configName) return Pool.Get() } func getConn(configName string) { //获取配置信息 redisCfg := config.GetCfg(configName)//这是我自己写的获取连接配置信息的方法 MaxIdle,_ := strconv.Atoi(redisCfg["MaxIdle"]) MaxActive,_ := strconv.Atoi(redisCfg["MaxActive"]) IdleTimeout,_ := strconv.Atoi(redisCfg["IdleTimeout"]) //链接 Pool = &redis.Pool{ MaxIdle:MaxIdle, MaxActive:MaxActive, IdleTimeout: time.Duration(IdleTimeout) * time.Second, Dial: func() (redis.Conn, error) { c, err := redis.Dial(redisCfg["SOCKET_TYPE"], redisCfg["HOST"]+":"+redisCfg["PORT"]) if err != nil { return nil, fmt.Errorf("redis connection error: %s", err) } //验证redis密码 if _, authErr := c.Do("AUTH", redisCfg["PASSWORD"]); authErr != nil { return nil, fmt.Errorf("redis auth password error: %s", authErr) } return c, err }, TestOnBorrow: func(c redis.Conn, t time.Time) error { _, err := c.Do("PING") if err != nil { return fmt.Errorf("ping redis error: %s", err) } return nil }, } // fmt.Printf(`%T`, Pool) }

调用案例:

package testmodel import ( redis "golang-api/library/redis" redigo "github.com/garyburd/redigo/redis" ) //测试redis func TestRedis() (interface{}){ redisConn := redis.Conn("a")//因为我的redis有很多个,是根据传入配置获取相应的实例,这里获取a配置的实例 defer redisConn.Close() //执行 data,_ := redigo.Values(redisConn.Do("HGETALL","h:test:data")) }

 

常见的具体命令操作可以参考:https://blog.csdn.net/weixin_37696997/article/details/78634145

最新回复(0)