Periodic Task System 是我设计的一个可以用来做定时任务或实时任务的任务系统。
任务系统的服务端可以将数据储存在 sqlite 或在 postgres 数据库。
存到数据库需要对数据进行编码,取出数据需要进行解码,其实这个过程挺耗 CPU 的。
对于一些马上要执行的任务,是不需要存进数据库,我们直接缓存起来就好。
data Memory = Memory {...}
我利用 hashmap 设计一个内存的数据库,用来存储任务数据,这些任务数据不需要进行解码或者编码。
我将这个内存数据库作为缓存数据库,存储一定数量并马上要执行的任务数据到内存数据库中,这里设置的是 1 分钟内执行的任务。
data Cache db = Cache
{ memory :: Memory
, backend :: db
, maxSize :: Int64
}
这样子我们就把热任务和冷任务分开来,保证任务系统的高效运行。
具体代码参见:
Cache.hs
网友评论