golang:goredis库pipeline使用方式

goredis库连接客户端

package client
import (
	"github.com/go-redis/redis"
	"github.com/sirupsen/logrus"
)

var MainRDS *redis.Client
func init() {
	ConnectRedis()
}
func ConnectRedis() {
	MainRDS = redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379", Password: "******"})
	err := MainRDS.Ping().Err()
	if err != nil {
		logrus.Infof("[ConnectRedis]connect redis error:%s", err.Error())
		panic("init client error")
	}
}

pipeline命令的使用

PS:如果redis采用了集群部署,不可以直接使用pipeline命令进行操作,因为访问的key可能并不在同一个节点上

// PipelineGetHashField 使用pipeline命令获取多个hash key的单个字段
// keyList,需要获取的hash key列表
// field 需要获取的字段值
func PipelineGetHashField(keyList []string,filed string) []string {
	pipeClient :=client.MainRDS.Pipeline()
	for _, key := range keyList {
		pipeClient.HGet(key, filed)
	}
	res, err := pipeClient.Exec()
	if err != nil {
		if err != redis.Nil {
			logrus.WithField("key_list", keyList).Errorf("[PipelineGetHashField] get from redis error:%s", err.Error())
		}
		/********** !!!!!!!!!!*************/
		// 注意这里如果某一次获取时出错(常见的redis.Nil),返回的err即不为空
		// 如果需要处理redis.Nil为默认值,此处不能直接return
	}
	valList := make([]string, 0, len(keyList))
	for index, cmdRes := range res {
		var val string
		// 此处断言类型为在for循环内执行的命令返回的类型,上面HGet返回的即为*redis.StringCmd类型
		// 处理方式和直接调用同样处理即可
		cmd, ok := cmdRes.(*redis.StringCmd) 
		if ok {
			val,err = cmd.Result()
			if err != nil {
				logrus.WithField("key",keyList[index]).Errorf("[PipelineGetHashField] get key error:%s",err.Error())
			}
		}
		valList = append(valList, val)
	}
	return valList
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在 Golang 中连接 Redis 时失败,可能是以下几个原因: 1. Redis 服务器未启动 请确保 Redis 服务器已经在运行。你可以在命令行下输入 `redis-cli` 命令,查看 Redis 是否能够正常启动。 2. Redis 服务器未开启远程访问 默认情况下,Redis 只允许本地访问。如果你需要从远程连接 Redis,需要修改 Redis 的配置文件,将 `bind` 属性设置为 Redis 服务器的 IP 地址。例如,如果 Redis 服务器的 IP 地址为 192.168.1.100,你需要将配置文件中的 `bind` 属性设置为 `bind 192.168.1.100`。 3. Redis 服务器的防火墙未开放端口 如果 Redis 服务器的防火墙开启了,你需要开放 Redis 服务器的端口号。默认情况下,Redis 使用的端口号为 6379。你可以在 Redis 服务器的防火墙中开放该端口。 4. Golang 代码中的连接参数错误 请检查你的 Golang 代码中的连接参数是否正确。例如,你需要确保 Redis 服务器的 IP 地址、端口号、密码等信息都正确。 以下是一个简单的 Golang 代码连接 Redis 的示例: ```go package main import ( "github.com/go-redis/redis" ) func main() { client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) pong, err := client.Ping().Result() if err != nil { fmt.Println("Failed to ping Redis:", err) return } fmt.Println("Successfully connected to Redis:", pong) } ``` 你可以根据自己的实际情况修改该代码中的连接参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值