如何从golang go-redis中的redis.Cmder获取价值?
Posted
技术标签:
【中文标题】如何从golang go-redis中的redis.Cmder获取价值?【英文标题】:How to get get value from redis.Cmder in golang go-redis? 【发布时间】:2021-09-13 10:56:13 【问题描述】: 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
如何从中获取价值?我没有找到任何文件.......
【问题讨论】:
【参考方案1】:要么保留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
或 type-assert / type-switch 将 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()
【讨论】:
以上是关于如何从golang go-redis中的redis.Cmder获取价值?的主要内容,如果未能解决你的问题,请参考以下文章