go-redis
原创redisgoredis客户端大约 1 分钟
go-redis
下载
go get -u github.com/go-redis/redis
连接
单机
// 定义一个RedisSingleObj结构体
type RedisSingleObj struct {
Redis_host string
Redis_port uint16
Redis_auth string
Database int
Db *redis.Client
}
// 结构体InitSingleRedis方法: 用于初始化redis数据库
func (r *RedisSingleObj) InitSingleRedis() (err error) {
// Redis连接格式拼接
redisAddr := fmt.Sprintf("%s:%d", r.Redis_host, r.Redis_port)
// Redis 连接对象: NewClient将客户端返回到由选项指定的Redis服务器。
r.Db = redis.NewClient(&redis.Options{
Addr: redisAddr, // redis服务ip:port
Password: r.Redis_auth, // redis的认证密码
DB: r.Database, // 连接的database库
IdleTimeout: 300, // 默认Idle超时时间
PoolSize: 100, // 连接池
})
fmt.Printf("Connecting Redis : %v\n", redisAddr)
// 验证是否连接到redis服务端
res, err := r.Db.Ping().Result()
if err != nil {
fmt.Printf("Connect Failed! Err: %v\n", err)
return err
} else {
fmt.Printf("Connect Successful! Ping => %v\n", res)
return nil
}
}
测试
func main() {
conn := &RedisSingleObj{
Redis_host: "127.0.0.1",
Redis_port: 6379,
Redis_auth: "xxoo123",
}
defer conn.Db.Close()
err := conn.InitSingleRedis()
if err != nil {
panic(err)
}
}
哨兵
type RedisSentinelObj struct {
Redis_master string
Redis_addr []string
Redis_auth string
Db *redis.Client
}
// 结构体方法
func (r *RedisSentinelObj) initSentinelClient()(err error){
r.Db = redis.NewFailoverClient(&redis.FailoverOptions{
MasterName: "master",
SentinelAddrs: []string{"x.x.x.x:26379", "xx.xx.xx.xx:26379", "xxx.xxx.xxx.xxx:26379"},
})
_, err = rdb.Ping().Result()
if err != nil {
return err
}
return nil
}
测试
// 定义一个RedisClusterObj结构体
type RedisClusterObj struct {
Redis_addr []string
Redis_auth string
Db *redis.Client
}
// 结构体方法
func (r *RedisSingleObj) initClusterClient()(err error){
r.Db = redis.NewClusterClient(&redis.ClusterOptions{
Addrs: []string{":7000", ":7001", ":7002", ":7003", ":7004", ":7005"},
})
_, err = rdb.Ping().Result()
if err != nil {
return err
}
return nil
}
