不同企业使用sync.Map全局变量进行记录,协程异步任务定时更新sync.Map数据到redis中

package main

import (
    "fmt"
    "github.com/labstack/echo"
    "net/http"
    "time"

    //"net/http"
    //"github.com/labstack/echo"
    "sync"

    "github.com/nosixtools/timewheel"


)


var m sync.Map
const time_in_seconds = 60




func main() {

    //初始化时间轮盘
    //参数:interval 时间间隔
    //参数:slotNum  轮盘大小
    tw := timewheel.New(time.Second, 60)

    tw.Start()

    key := "task1"
    //添加定时任务
    //参数:interval 时间间隔
    //参数:times 执行次数 -1 表示周期任务 >0 执行指定次数
    //参数:key 任务唯一标识符 用户更新任务和删除任务
    //参数:taskData 回调函数参数
    //参数:job 回调函数
    err := tw.AddTask(time.Second, -1, key, timewheel.TaskData{},
        func(params timewheel.TaskData) {


            fmt.Println(time.Now().Unix())

            m.Range(func(key, value interface{}) bool {


                fmt.Println("处理id:",key.(string),"值:",value.(int))

                m.Delete(key)

                return true
            })

        })



    if err!=nil{
        fmt.Println(err)
    }


    //
    //
    //

    e := echo.New()
    e.GET("/", func(c echo.Context) error {

        var id = c.QueryParam("id")

        value, ok := m.Load(id)

        if ok{

            m.Store(id,value.(int)+1)


        }else{
            m.Store(id,1)
        }


        return c.String(http.StatusOK, "Hello, World!")
    })
    e.Logger.Fatal(e.Start(":8000"))



}
最后修改:2022 年 02 月 19 日 07 : 38 PM
如果觉得我的文章对你有用,请随意赞赏