package main
import "fmt"
import "log"
import "time"
import "context"
import "net/http"
import "encoding/json"
import "github.com/tidwall/gjson"
import "github.com/go-redis/redis"
type Body struct {
Body string
}
var print = fmt.Println
var rdb *redis.Client
func initClient() (err error) {
rdb = redis.NewClient(&redis.Options{
Addr:"192.168.1.223:6379",
Password: "",
DB:4})
ctx,cancel := context.WithTimeout(context.Background(),5*time.Second)
defer cancel()
_,err = rdb.Ping(ctx).Result()
if err != nil {
return err
}
return nil
}
func home(w http.ResponseWriter, r *http.Request) {
decoder := json.NewDecoder(r.Body)
var body Body
err := decoder.Decode(&body)
if err != nil {
panic(err)
}
local,_ := time.LoadLocation("Asia/Shanghai")
now := time.Now().In(local).Format("2006-01-02 15:04:05")
data := gjson.Get(body.Body, "data")
if err:=initClient();err!=nil {
print(err)
return
}
ctx := context.Background()
if count := len(data.Array());count > 0 {
_ = rdb.LPush(ctx, "toutiao_data", data.Raw)
}
print(now, len(data.Array()),rdb.LLen(ctx,"toutiao_data"))
fmt.Fprintf(w, "ok")
}
func handleRequests() {
http.HandleFunc("/redis", home)
log.Fatal(http.ListenAndServe(":10000", nil))
}
func main() {
handleRequests()
}