我正在使用这个函数来按状态获取订单,这个函数的问题在于,过滤发生在我从redis获得所有订单之后,是否有一种方法可以像Postgres(例如where语句)那样按值redis端进行过滤,或者redis不支持吗?
func (r *queryResolver) OrdersByStatus(ctx context.Context, status string) ([]*models.Order, error) {
defer utils.Elapsed("redis query => orders")()
myCtx := ctx.Value(constants.KMyContext).(types.MyCtx)
sessionData, sessionErr := session.GetSessionData(myCtx.ResponseWriter, myCtx.Request, constants.KCurrentUser)
if sessionErr != nil {
return nil, sessionErr
}
marshalledStories, err := cache.RedisClient.Get(ctx, constants.KOrders+sessionData.UUID).Result()
if err != nil {
log.Println("redis get err", err)
return nil, errors.New(constants.InternalServerError)
}
var orders []*models.Order
unmarshallErr := json.Unmarshal([]byte(marshalledStories), &orders)
if unmarshallErr != nil {
log.Println("redis unmarshallErr", unmarshallErr)
return nil, errors.New(constants.InternalServerError)
}
var filtered []*models.Order
for _, u := range orders {
if u.Status == status {
filtered = append(filtered, u)
}
}
return filtered, nil
}
慕神8447489
杨__羊羊
相关分类