不同企业使用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"))
}