我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:九肖六肖三肖全年资料 > 去重 >

golang基于redis lua封装的优先级去重队列

归档日期:06-16       文本归类:去重      文章编辑:爱尚语录

  前两天由于某几个厂商的api出问题,导致后台任务大量堆积,又因为我这边任务流系统会重试超时任务,所以导致队列中有大量的重复任务。这时候我们要临时解决两个事情,一件事情,让一些高质量的任务优先执行; 另一件事情, 要有去重。 rabbitmq不能很好的针对这类情况去重、分优先级。

  这时候我又想到了我最爱的redis… 去重? list + set 就可以解决, 优先级,zset + zrange + zrem 也可以解决… 但问题这几个命令非原子,那么怎么让他们原子? 写模块 or redis lua . 首先在 redis 4.x 写了个简单的module,但写完了发现一件颇为重要的事情,我们线 …. 然后又花了点时间改成redis lua的版本。项目本身的功能实现很简单,复杂的是创意 !!!

  使用redis lua 封装的去重及优先级队列方法, 达到了组合命令的原子性和节省来往的io请求的目的.

  需要改进地址也是很多, 比如 加入批量操作, 对于redis连接池引入方法改进等.

本文链接:http://odigallery.com/quzhong/205.html