Redis实现消息队列demo

 我来答
硪丨暧恋
2017-04-19 · TA获得超过8979个赞
知道大有可为答主
回答量:5336
采纳率:93%
帮助的人:2120万
展开全部
PHP 版本简易实现

将消息加入优先级的队列,将1,2替换为时间就是定时发送的队列了

1 $redis = new Redis();
2 $redis->connect('127.0.0.1', 6379);
3 $redis->zAdd('zset1', 1, 'message');
4 $redis->zAdd('zset1', 2, 'message2');

从队列中取出数据

1 $redis->zRevRangeByScore('zset1, '+inf', '-inf', array('withscores'=>false, 'limit'=>array(0,20)));

这条语句表示从zset1这个队列里按照score从最大(+inf)到最小(-inf)的排序中取出20条,不带score,如果想要从小到大可以用 zRangeByScore

如果你想让这些都运行在命令行下,可以参考下面来,当然这些是经过删减的

1 <?php
2 while (true) {
3 $pid = pcntl_fork();
4 if ($pid == -1) {
5 echo date('Y-m-d H:i:s') . "fork失败!\n";
6 } else if ($pid == 0) {
7 $redis = new Redis();
8 $redis->connect('127.0.0.1', 6379);
9 $redis->zRevRangeByScore('zset1', '+inf', '-inf', array('withscores'=>false, 'limit'=>array(0,20)));
10 exit;
11 } else {
12 pcntl_wait($status);
13 }
14 }

pcntl_fork是PHP中的生成子进程,当调用该函数时,会返回一个进程pid,当pid为0时表明是在子进程中,所以把要执行的东西全放这里
追问
我想知道java怎么实现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式