连接远程在处理消息队列时反应特别缓慢,30多条数据达到了29秒,请大佬帮我瞅一眼看看,我眼瞎了
func AddTaskVideoList(c *gin.Context) {
app := application.Gin{C: c}
id := c.Request.FormValue("id")
data := models.GetPendingVideo(id)
for _, value := range data{
redis.RightPushToList("video_encode", value)
models.UpdateTaskStatus(value.ID,1)
}
app.Response(http.StatusOK, http.StatusOK, data)
return
}
func GetPendingVideo(id string) (Task []Task) {
if id != "" {
db.Where("status = ? and task_rule_number=?", 0, id).Find(&Task)
} else {
db.Where("status = ?", 0).Find(&Task)
}
return
}
func RightPushToList(key string, data interface{}) error {
conn := RedisConn.Get()
defer conn.Close()
mjson, _ := json.Marshal(data)
mString := string(mjson)
fmt.Printf("print mString:%s", mString)
_, err := redis.Strings(conn.Do("RPUSH", key, data))
fmt.Println(data)
return err
}
func UpdateTaskStatus(id int, state int) error {
if err := db.Model(&Task{}).Where("`id` = ?", id).Update("status", state).Error; err != nil {
return err
}
return nil
}
个人建议你可以先看看是
GetPendingVideo
/RightPushToList
/UpdateTaskStatus
中哪个耗时比较多。看代码感觉是GetPendingVideo
,然后你看看是不是id==""的时候耗时比较多,进而定位是不是status没加索引?