func (d *dataAccess) GetIncidentsStartingInRange(start, end time.Time) ([]*models.Incident, error) { defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetIncidentsStartingInRange"})() conn := d.GetConnection() defer conn.Close() ids, err := redis.Ints(conn.Do("ZRANGEBYSCORE", "incidentsByStart", start.UTC().Unix(), end.UTC().Unix())) if err != nil { return nil, err } args := make([]interface{}, len(ids)+1) args[0] = "incidents" for i := range ids { args[i+1] = ids[i] } jsons, err := redis.Strings(conn.Do("HMGET", args...)) if err != nil { return nil, err } incidents := make([]*models.Incident, len(jsons)) for i := range jsons { inc := &models.Incident{} if err = json.Unmarshal([]byte(jsons[i]), inc); err != nil { return nil, err } incidents[i] = inc } return incidents, nil }
func ExampleInts() { c, err := dial() if err != nil { panic(err) } defer c.Close() c.Do("SADD", "set_with_integers", 4, 5, 6) ints, _ := redis.Ints(c.Do("SMEMBERS", "set_with_integers")) fmt.Printf("%#v\n", ints) // Output: // []int{4, 5, 6} }
v interface{} err error } func ve(v interface{}, err error) valueError { return valueError{v, err} } var replyTests = []struct { name interface{} actual valueError expected valueError }{ { "ints([v1, v2])", ve(redis.Ints([]interface{}{[]byte("4"), []byte("5")}, nil)), ve([]int{4, 5}, nil), }, { "ints(nil)", ve(redis.Ints(nil, nil)), ve([]int(nil), redis.ErrNil), }, { "strings([v1, v2])", ve(redis.Strings([]interface{}{[]byte("v1"), []byte("v2")}, nil)), ve([]string{"v1", "v2"}, nil), }, { "strings(nil)", ve(redis.Strings(nil, nil)),