php 利用 redis 有序集合 实现 延时消费 队列
2018-10-24 11:38
429 查看
简单思路:将使用延时消费的信息存入redis的有序集合中,score 为消费时间,用定时器 根据score 取出符合消费的元素进行(zRangeByScore)
[code] #延时消费简单逻辑代码 ############################################################### #生产 $key ='延时消费'; $score = time();//取当前时间为分数 score #如果需要进行更多操作,集合中的元素使用josn 体 $redis->zAdd($key , $score + 10 , 'JOSN1'); $redis->zAdd($key , $score + 20 , 'JOSN2'); $redis->zAdd($key , $score + 30, 'JOSN3'); #消费 $key ='延时消费'; $score = "(" . time();//小于等于 #循环取出 $max_number = 9999;//设定每个进程最多消费数量 $number = 0;//消费数量计数 while ($data = $redis->zRangeByScore($key, 0, $score, ['limit' => [1, 1]])){ if($number++ >= $max_number){ exit; } #将分数设置设0,避免重复消费(业务也需要做处理) $redis->zadd($key,0,$data[0]); #TODO 处理业务处理 或者进行其他队列 #删除 $redis->zDelete($key,$data[0]); }
相关文章推荐
- PHP中利用redis实现消息队列处理高并发请求--简洁代码实现效果
- PHP中利用redis实现消息队列处理高并发请求
- PHP中利用redis实现消息队列处理高并发请求
- 利用redis有序集合实现实时更新阅读排行榜
- 利用DelayQueue实现延时消息队列(简易版MQ)
- 利用Redis 实现消息队列
- php 实现 redis 队列,等待有新消息入列
- Java实现Redis的有序集合(sortedset)命令
- PHP用redis实现多进程队列
- PHP消息队列实现及应用:流量削峰案列(Redis的List类型实现秒杀)
- 基于redis+mysql+php的简单队列实现
- 使用Redis实现轻量级延时队列
- PHP实现电商订单自动确认收货redis队列
- redis实现简单的消息队列(php)
- redis实现有序的消息队列
- Redis PHP Set集合实现消息队列
- redis实现有序队列
- Php-Redis 邮件队列实现总结
- Java利用Redis实现消息队列
- 基于Redis实现延时队列服务