首先我们需要安装一下依赖包Redisgo
go get github.com/garyburd/redigo/redis
go语言依赖安装失败
我们可以先设置代理来提高网上避免响应超时
然后可能还是会安装失败
这个时候查看go环境
go env -w GOSUMDB=off 执行这个之后就可以解决以上出现的问题
如果设置了 GOSUMDB 为 “off” 或者使用 go get 的时候启用了-insecure
参数,Go 不会去对下载的依赖包做安全校验,存在一定的安全隐患,所以给大家推荐接下来的环境变量。
GOSUMDB相当于一个依赖包的安装保护吧
经过自己一段时间的摸索就直接给大家呈现最容易理解的Redis连接池,说白了就是定义所需要的函数,在需要的时候引用该包的定义函数
go-redis模块自带连接池
Ctrl +点击 Pool 会跳转到该结构体 ,具体参数可以自己一个个仔细查看。
package RedisPool
import (
"github.com/garyburd/redigo/redis"
)
var RedisPool *redis.Pool
func GetRedisConn() redis.Conn {
if RedisPool == nil {
RedisPool = &redis.Pool{
MaxIdle: 16, //最初的连接数量
MaxActive: 0, //连接池最大连接数量,不确定可以用0(0表示自动定义),按需分配
IdleTimeout: 300, //连接关闭时间 300秒 (300秒不使用自动关闭)
Dial: func() (redis.Conn, error) {
conn, err := redis.Dial("tcp", "xx.xxx.xxx.xxx:xxxx")
if _, err := conn.Do("AUTH", "连接池密码"); err != nil {
conn.Close()
}
return conn, err
},
}
}
return RedisPool.Get() //获取连接
}
//关闭释放池使用的资源
func CloseRedis() {
if RedisPool != nil {
RedisPool.Close()
}
}
//读取Redis数据库指定的值
func ReadRedis(name string) (score string, err error) {
conn := GetRedisConn()
reply, err := conn.Do("get", name)
if err != nil {
panic(err)
}
score, err = redis.String(reply, err) //Int 是将命令回复转换为整数的帮助程序
return score, err
}
//往Redis写入指定一个值
func WriteRedis(name string, score string) {
conn := GetRedisConn()
_, err := conn.Do("setnx", name, score)
if err != nil {
panic(err)
}
}
//删除对应的键值
func MoveRedis(name string, num int) error {
conn := GetRedisConn()
_, err := conn.Do("move", name, num)
if err != nil {
panic(err)
}
return err
}