Closed taf2 closed 9 years ago
Thank you Todd, Scan()
is now returning a more appropriate type but it can get complicated when arrays with array elements are involved, I'm attaching the same example with a snippet that walks over results:
package main
import (
"fmt"
"github.com/xiam/resp"
"log"
"menteslibres.net/gosexy/redis"
"reflect"
)
func main() {
var rs *redis.Client = redis.New()
err := rs.Connect("10.1.2.201", 6379)
if err != nil {
log.Printf("Connect failed: %s\n", err.Error())
return
}
_, err = rs.Select(5)
if err != nil {
log.Printf("Could not ping: %s\n", err.Error())
return
}
poolKeys, err := rs.Keys(fmt.Sprintf("pool.%d.*", 25))
if poolKeys != nil && len(poolKeys) > 0 {
for i := 0; i < len(poolKeys); i++ {
log.Printf("key: %s\n", poolKeys[i])
}
log.Printf("total keys: %d\n", len(poolKeys))
}
//result, err := rs.Scan(0, []byte("MATCH"), []byte("pool.25.*"), []byte("COUNT"), []byte("10"))
// You can use multiple types and they'll get converted to []byte automatically.
result, err := rs.Scan(0, "MATCH", "pool.25.*", "COUNT", 10)
if err != nil {
log.Printf("Could not scan: %s\n", err.Error())
return
}
for i := range result {
log.Printf("result (%d), type: %v, value: %v\n", i, reflect.TypeOf(result[i]), result[i])
if message, ok := result[i].(*resp.Message); ok {
log.Printf("\ttype: %v, value: %v\n", reflect.TypeOf(message.Interface()), message.Interface())
}
}
}
Fantastic! Thanks @xiam
the following