Golang成长之路:操作redis

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值