zoon / requeue
此包已被废弃,不再维护。未建议替代包。
Redis无锁延迟消息队列
1.0.3
2023-05-17 22:31 UTC
Requires
- php: >=8.1
- ext-redis: *
This package is auto-updated.
Last update: 2024-03-13 12:42:26 UTC
README
Redis无锁延迟消息队列。
快速开始
安装
composer require zoon/requeue
注意:需要Redis >= 2.2.0
示例
初始化
$redis = new \Redis(); if (!$redis->connect('127.0.0.1')) { exit('no connection'); } $queue = createQueue($redis); function createQueue(\Redis $connection): \Zoon\ReQueue\Queue { $redisAdapter = new \Zoon\ReQueue\RedisAdapter($connection); return new \Zoon\ReQueue\Queue($redisAdapter); }
推送
$queue->push(new \Zoon\ReQueue\Message('id', time() + 3600, 'data'));
更新
$queue->update('id', function (?\Zoon\ReQueue\Message $old) { $time = ($old === null ? time() + 3600 : $old->getTimestamp() + 600); $data = ($old === null ? 'data' : $old->getData() . '+new'); return new \Zoon\ReQueue\MessageData($time, $data); });
计数
printf("count: %d\n", $queue->count());
// count: 1
弹出
$timestampRange = new \Zoon\ReQueue\TimestampRange(null, time() + 3600 + 600); $message = $queue->pop($timestampRange); if ($message !== null) { printf("id: %s\n", $message->getId()); printf("timestamp: %d\n", $message->getTimestamp()); printf("data: %s\n", $message->getData()); }
// id: id // timestamp: 1575040030 // data: data+new
清除
$queue->clear();