zoukankan      html  css  js  c++  java
  • go的定时任务工具

    go定时任务三方包,这个直接拉的版本和文档里的版本是不一样的,要去github看文档,每个版本的使用方法是不一样的,我们这里使用下面的命令去拉取3.0.0版本的查看

    go get github.com/robfig/cron/v3@v3.0.0

    package Jobs
    
    import (
       "encoding/json"
       "log"
       "sz1/AppInit"
       "sz1/Models"
       "time"
    )
    
    //排行榜定时任务,这里是优化mysql的场景,一张查询很耗时又需要经常查询的表,我通过一个定时任务每6秒去查询一下真实数据更新到缓存表中,然后用户真正查看的数据是缓存表,这样速度就很快了
    
    func init() {
       _, err := MyCron.AddFunc("0/6 * * * * *", func() { //每隔6秒触发
          prods := &Models.BookList{}
          sql := `select book_id,book_name,book_kind from (
    select  book_id,book_name, meta_value,book_kind,IF(@pre=book_kind,@rownum:=@rownum+1,@rownum:=1) as rownum,@pre:=book_kind
    from (select book_kind,b.book_id,book_name,a.meta_value from book_metas a, books b where a.item_id=b.book_id AND
    meta_key='click' ORDER  by
    b.book_kind ,meta_value desc
       ) a,(select @pre:='',@rownum:=0 ) b ) c
    where c.rownum <=10`
          db := AppInit.GetDB().Raw(sql).Scan(prods)
          if db.Error != nil {
             log.Println(db.Error)
          } else {
             b, err := json.Marshal(prods)
             if err != nil {
                log.Println(err)
             }
             cache := &Models.BooksCache{CacheType: Models.CacheType_RankList, CacheContent: string(b), UpdateTime: time.Now()}
             AppInit.GetDB().Set("gorm:insert_option", "ON DUPLICATE KEY UPDATE update_time=now()").Create(cache)
          }
       })
       if err != nil {
          log.Println(err)
       }
    }




  • 相关阅读:
    汇编14:端口
    汇编13:int指令
    整个软件开发的流程
    css grid 布局
    socket粘包处理
    如何做好需求变更管理?——需求变更流程规范
    软件工程需求分析文档模板
    使用layui的form.on绑定select选中事件, form.on()不执行的原因分析
    ID4收藏
    ASP.NET MVC5中View-Controller间数据的传递
  • 原文地址:https://www.cnblogs.com/hualou/p/12167403.html
Copyright © 2011-2022 走看看