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