func (d *dataAccess) GetTempConfig(hash string) (string, error) { defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetTempConfig"})() conn := d.GetConnection() defer conn.Close() key := "tempConfig:" + hash dat, err := redis.String(conn.Do("GET", key)) if err != nil { return "", err } _, err = conn.Do("EXPIRE", key, configLifetime) return dat, err }
func ExampleString() { c, err := dial() if err != nil { panic(err) } defer c.Close() c.Do("SET", "hello", "world") s, err := redis.String(c.Do("GET", "hello")) fmt.Printf("%#v\n", s) // Output: // "world" }
// This example implements ZPOP as described at // http://redis.io/topics/transactions using WATCH/MULTI/EXEC and scripting. func Example_zpop() { c, err := dial() if err != nil { fmt.Println(err) return } defer c.Close() // Add test data using a pipeline. for i, member := range []string{"red", "blue", "green"} { c.Send("ZADD", "zset", i, member) } if _, err := c.Do(""); err != nil { fmt.Println(err) return } // Pop using WATCH/MULTI/EXEC v, err := zpop(c, "zset") if err != nil { fmt.Println(err) return } fmt.Println(v) // Pop using a script. v, err = redis.String(zpopScript.Do(c, "zset")) if err != nil { fmt.Println(err) return } fmt.Println(v) // Output: // red // blue }
func (d *dataAccess) GetMetricTagSets(metric string, tags opentsdb.TagSet) (map[string]int64, error) { defer collect.StartTimer("redis", opentsdb.TagSet{"op": "GetMetricTagSets"})() conn := d.GetConnection() defer conn.Close() var cursor = "0" result := map[string]int64{} for { vals, err := redis.Values(conn.Do(d.HSCAN(), searchMetricTagSetKey(metric), cursor)) if err != nil { return nil, slog.Wrap(err) } cursor, err = redis.String(vals[0], nil) if err != nil { return nil, slog.Wrap(err) } mtss, err := stringInt64Map(vals[1], nil) if err != nil { return nil, slog.Wrap(err) } for mts, t := range mtss { ts, err := opentsdb.ParseTags(mts) if err != nil { return nil, slog.Wrap(err) } if ts.Subset(tags) { result[mts] = t } } if cursor == "" || cursor == "0" { break } } return result, nil }