func (r *rutil) printKey(key string, fld []string, json bool) { cli := r.Client() var res *redis.Resp res = cli.Cmd("TYPE", key) checkErr(res.Err) key_t, err := res.Str() checkErr(err) fmt.Printf("KEY: %s\nTYP: %s\n", key, key_t) switch key_t { case "set": res = cli.Cmd("SMEMBERS", key) checkErr(res.Err) set, err := res.List() checkErr(err) fmt.Println("VAL:", set, "\n") case "hash": if len(fld) == 0 { res = cli.Cmd("HGETALL", key) checkErr(res.Err) hash, err := res.Map() checkErr(err) ppHash(hash, json) } else { res = cli.Cmd("HMGET", key, fld) arr, err := res.List() checkErr(err) hash := map[string]string{} for i, k := range fld { hash[k] = arr[i] } ppHash(hash, json) } case "string": res = cli.Cmd("GET", key) checkErr(res.Err) str, err := res.Str() checkErr(err) ppString(str, json) case "zset": res = cli.Cmd("ZRANGE", key, 0, -1) checkErr(res.Err) set, err := res.List() checkErr(err) fmt.Println("VAL:", set, "\n") case "list": res = cli.Cmd("LRANGE", key, 0, -1) checkErr(res.Err) list, err := res.List() checkErr(err) fmt.Println("VAL:", list, "\n") default: checkErr(key_t) } }
func redisListResponseExpected(w http.ResponseWriter, r *redis.Resp, context string) ([]string, bool) { if r.IsType(redis.Str) { errStr, _ := r.Str() log.Printf("%s: redis => %s\n", context, errStr) w.WriteHeader(500) data := make([]string, 0) return data, false } data, err := r.List() if err != nil { log.Printf("%s => %v\n", context, err) w.WriteHeader(500) data := make([]string, 0) return data, false } return data, true }