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
}
How to get the value from it ? I don't find any document .......
Either retain the concrete command type returned by 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
}
or type-assert / type-switch the Cmder to the concrete type.
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()
}
}