代码拉取完成,页面将自动刷新
基于Redis有序集合实现的Redis延迟队列,添加/删除/查找的复杂度都是 O(1),每个队列中可存储40多亿元素。
"php": ">=5.4"
"ext-redis": ">=2.0"
composer require easy-queue/easy-queue
//加载Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//创建easy-queue对象
$queue = new Queue($redis);
//向seo_link延迟队列中投递数据(30秒后处理)
$name = 'seo_link';
$value = json_encode([
'article_id' => $_GET['article_id'],
'add_time' => time(),
]);
$time = time() + 30;
$res = $queue->add($name, $value, $time);
if ($res)
{
echo '投递成功';
}
else
{
echo '投递失败';
}
//加载Redis
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//创建easy-queue对象
$queue = new Queue($redis);
//从seo_link延迟队列中取出到期的数据
$name = 'seo_link';
$value = $queue->get($name);
if ($value)
{
$value = json_decode($value, true);
var_dump($value);
}
消费者函数get方法参数说明:
$name:传递要消费的延迟队列名称
$e_time:获取队列中到期时间小于等于$e_time的数据
$s_time:获取队列中到期时间大于等于$s_time的数据
$limit:获取多少条数据,如果大于1条则返回二维数组,否则返回一维数组
$remove:设置获取后是否删除队列中的值,默认为删除
(1).在队列中查询time<=1603597141 and time>=0 的元素(同时队列中会自动删除符合条件的元素)
$time = 1603597141;
$list = $queue->get($time);
(2).在队列中查询time<=1603597413 and time>=1603597132 的元素(同时队列中会自动删除符合条件的元素)
$time1 = 1603597413;
$time2 = 1603597132;
$list = $queue->get($time1, $time2);
(3).在队列中查询time<=1603597555 and time>=1603597132 的元素,只返回1条(同时队列中会自动删除这条元素)
$time1 = 1603597555;
$time2 = 1603597132;
$list = $queue->get($time1, $time2,1);
(4).在队列中查询time<=1603597693 and time>=1603597132 的元素返回10条即可,不删除队列数据,仅查看数据
$time1 = 1603597693;
$time2 = 1603597132;
$list = $queue->get($time1, $time2, 10, false);
......
请反馈至QQ392223903,感谢持续反馈!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型