如何从 golang go-redis 中的 redis.Cmder 获取价值?

How to get get value from redis.Cmder in golang go-redis?

    temp1Ctx, temp1Cancer := lib.GetTimeoutCtx(ctx)
    pipeline := util.RedisClusterClient.Pipeline()
    for _, key := range userIdRedisSlice {
        pipeline.HMGet(temp1Ctx, key, userIdRedisFeature...)
    }
    userProfile, err := pipeline.Exec(temp1Ctx)
    if err != nil {
        lib.ErrorLogger.Errorf(": %v\n", err)
    }
    defer temp1Cancer()
    // lib.ErrorLogger.Infof(": %v", userProfile)

    for _, redisCmd := range userProfile {
        //TODO
    }

如何从中获取值?我没有找到任何文件......

要么保留HMGet

返回的具体命令类型
temp1Ctx, temp1Cancer := lib.GetTimeoutCtx(ctx)
pipeline := util.RedisClusterClient.Pipeline()
cmds := []*redis.SliceCmd{}
for _, key := range userIdRedisSlice {
    cmds = append(cmds, pipeline.HMGet(temp1Ctx, key, userIdRedisFeature...))
}
if _, err := pipeline.Exec(temp1Ctx); err != nil {
    lib.ErrorLogger.Errorf(": %v\n", err)
}
defer temp1Cancer()

for _, c := range cmds {
    // use c.Result()
    // or use c.Scan
}

或类型断言/类型切换 Cmder 到具体类型。

temp1Ctx, temp1Cancer := lib.GetTimeoutCtx(ctx)
pipeline := util.RedisClusterClient.Pipeline()
for _, key := range userIdRedisSlice {
    pipeline.HMGet(temp1Ctx, key, userIdRedisFeature...)
}
userProfile, err := pipeline.Exec(temp1Ctx)
if err != nil {
    lib.ErrorLogger.Errorf(": %v\n", err)
}
defer temp1Cancer()

for _, redisCmd := range userProfile {
    switch c := redisCmd.(type) {
    case *redis.SliceCmd:
          // use c.Result()
          // or c.Scan()
    }
}