1.一种基于redis的高并发延时任务系统,其特征在于,包括daemon组件、redis组件、event进程、消息队列组件和work组件,所述redis组件中具有若干个key,任务通过uuid进行hash路由到对应的key中,所述event进程对key进行轮询,所述event进程将任务写入消息队列组件中,所述work组件从消息队列组件取消消息并执行业务。
2.如权利要求1所述的一种基于redis的高并发延时任务系统,其特征在于,所述key中储存有一个source和一个value,所述source为任务的执行时间,所述value为要执行的任务数据。
3.如权利要求1所述的一种基于redis的高并发延时任务系统,其特征在于,所述event进程与key一一对应。
4.如权利要求1所述的一种基于redis的高并发延时任务系统,其特征在于,还包括daemon组件,所述daemon组件实时监测任务和redis组件,当redis写入失败时,进行异步补偿。
5.如权利要求1所述的一种基于redis的高并发延时任务系统,其特征在于,所述event进程多机部署,并设有zookeeper选主,由所述zookeeper选主的leader主机能够从redis取消息。
6.如权利要求5所述的一种基于redis的高并发延时任务系统,其特征在于,所述zookeeper选主的leader主机宕机后,所述zookeeper选主重新选取新的leader主机。
7.如权利要求1所述的一种基于redis的高并发延时任务系统,其特征在于,所述key的数量为可扩容的。
8.一种基于redis的高并发延时任务的处理方法,其特征在于,包括如下步骤:
s1:将任务的执行时间作为score,要执行的任务数据作为value,存放在zset中;
s2:用一个进程定时查询zset的score分数最小的元素,用zrangebyscore命令来实现;
s3:如果最小的分数小于等于当前时间戳,就将该任务取出来执行,否则休眠一段时间后再查询。