package main import ( "encoding/csv" "flag" "fmt" "github.com/garyburd/redigo/redis" "os" "runtime" "time" ) func main() { flag.Parse() runtime.GOMAXPROCS(runtime.NumCPU()) file, err := os.OpenFile(fmt.Sprintf("./%s.csv", time.Now().Format("20060102")), os.O_CREATE|os.O_RDWR, 0644) if err != nil { fmt.Println("open file is failed, err: ", err) } defer file.Close() // 写入UTF-8 BOM,防止中文乱码 file.WriteString("\xEF\xBB\xBF") w := csv.NewWriter(file) w.Write([]string{"uid", "手机号", "次数"}) defer w.Flush() redisMgr := redix.NewRedis() defer redisMgr.Close() byteSlices, _ := redis.ByteSlices(redisMgr.Do("ZREVRANGE", "ACTIVITY:QIXI-WINNING", 0, 9, "WITHSCORES")) for i := 0; i < len(byteSlices); i++ { if i%2 == 1 { uid := string(byteSlices[i-1]) user := new(models.User) db.NewXorm().SQL(" SELECT id, mobile FROM `user` WHERE id = ? ", uid).Get(user) if user.Id == 0 { continue } score := string(byteSlices[i]) w.Write([]string{ uid, user.Mobile, score }) } } fmt.Println("Success.") }