Go语言使用Redigo操作Redis详解:安装、连接与封装
本文介绍Go语言中使用Redigo库连接Redis的标准做法,包含带/无密码连接、集合操作(SADD)示例及单例模式封装技巧,帮助开发者快速搭建稳定的Redis访问层。
准备条件:安装Redigo
在Go生态中,redigo是广泛使用的Redis客户端库。在使用前,需要通过Go Modules或go get将其下载到项目中。建议使用最新维护的模块路径:
$ go get github.com/gomodule/redigo
真实操作顺序:建立连接与数据操作
第1步:配置环境并建立TCP连接
目的:确保Go程序能正确连接到指定的Redis实例。Redis通常监听在 127.0.0.1:6379。
参数说明:
Dial("tcp", host):指定通信协议。DialPassword("pwd"):若Redis设置了密码,必须传入此选项。
场景A:带密码的连接(基础示例)
以下代码演示了如何初始化连接并使用 SADD 命令向集合添加元素。
package main
import (
"log"
"github.com/gomodule/redigo/redis"
)
func main() {
server := "127.0.0.1:6379"
// 配置密码认证选项
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", server, option)
if err != nil {
log.Println("connect server failed:", err)
return
}
defer c.Close()
// 执行 SADD 命令:向键 "myset" 添加成员 "10.8.37.98"
v, err := redis.Int64(c.Do("SADD", "myset", "10.8.37.98"))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("SADD added count:", v)
}
场景B:无密码的连接
对于开发环境或未开启验证的Redis,可直接连接:
package main
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
func main() {
c, err := redis.Dial("tcp", "127.0.0.1:6379")
if err != nil {
fmt.Println(err)
return
}
defer c.Close()
// 简单的 SET / GET 测试
_, err = c.Do("SET", "hello", "world")
if err != nil { log.Fatal(err) }
s, err := redis.String(c.Do("GET", "hello"))
fmt.Println(s)
}
第2步:批量添加集合成员 (SADD Batch)
当需要一次性向集合添加多个值时,可以构建 []interface{} 切片来传递参数。注意第一个参数永远是Key。
func batchAddSet() {
server := "127.0.0.1:6379"
option := redis.DialPassword("123456")
c, err := redis.Dial("tcp", server, option)
if err != nil {
log.Println("Failed to connect", err)
return
}
defer c.Close()
setKey := "myset"
// 构建参数列表: Key, Val1, Val2...
args := []interface{}{setKey, "10.1", "10.2"}
// 展开参数发送命令
v, err := redis.Int64(c.Do("SADD", args...))
if err != nil {
log.Println("SADD failed:", err)
return
}
log.Println("Batch added count:", v)
}
工程实践:Redis通用封装
在实际项目中,直接散乱地调用 redis.Dial 不利于管理。建议将连接逻辑封装为单例或全局对象,统一处理配置文件读取和错误日志。
封装要点:
- 定义全局
redis.Conn变量(生产环境建议改用连接池redis.Pool)。 - 通过配置文件获取 IP、端口和密码。
- 提供初始化和关闭接口。
package redis_helper
import (
"fmt"
"github.com/gomodule/redigo/redis"
"log"
// 假设这是项目内部的配置工具
"autumn/tools/cfg"
)
var REDIS redis.Conn
// InitRedis 负责在程序启动时建立连接
func InitRedis() {
REDIS = redis_connect("default")
}
// CloseRedis 释放资源
func CloseRedis() {
if REDIS != nil {
REDIS.Close()
}
}
func redis_connect(project string) redis.Conn {
// 从配置中心读取连接信息
server := fmt.Sprintf("%s:%s",
cfg.Get("redis", project+".host").String(),
cfg.Get("redis", project+".port").String())
var err error
// 读取密码,若为空字符串则表示无密码
passwd := cfg.Get("redis", project+".passwd").String()
option := redis.DialPassword(passwd)
c, err := redis.Dial("tcp", server, option)
if err != nil {
log.Fatalf("[GIN-Redis(%s)] connect to redis error: %v", project, err)
}
log.Printf("[GIN-Redis(%s)] connected success", project)
return c
}
完成判断
检查日志中是否输出 [GIN-Redis(default)] connected success,且后续执行 SADD 或 SET 时未报错,即表示封装生效。
简要总结
以上就是Go语言使用Redigo连接和操作Redis的详细指南,涵盖了从基础安装到工程化封装的全流程。更多关于Go语言中间件优化的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













