请问redis实现消息队列有几种方法?
网友回复
第一种通过lpop与lpush list队列
消息发送端
<?php $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //$password = '123456'; //$redis->auth($password); $arr = array('h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'); foreach ($a...
点击查看剩余70%
还有一种sub pub消息
消息生产端
<?php $channelName = "testPubSub"; $channelName2 = "testPubSub2"; //向指定频道发送消息 try { $redis = new Redis(); $redis->connect('127.0.0.1', 6379); for ($i = 0; $i < 5; $i++) { $data = array('key' => 'key'.$i, 'data' => 'testdata'); $ret = $redis->publish($cha...
点击查看剩余70%
stream流式消息队列处理方式
<?php //连接reids $redis = new Redis(); $redis->connect('127.0.0.1', 6379); //创建一个消息队列 // 星号表示自动生成id,后面参数key,value $redis->rawCommand('xadd', 'mq2', '*', 'ms1g', '1'); //在消息队列上创建一个组为mqGroup3 $redis->rawCommand('xgroup', 'create', 'mq2', 'mqGroup3', '0'); //读取组为mqGroup3的stream消息,每次读取一个,消费者为consumerA $_data = $redis->rawCommand('xreadgroup', 'group', 'mqGroup3', 'consumerA', 'count', '1', 'streams', 'mq2', '>'); //处理完后确认消息已处理,最后一个参数是消息id $redis->rawCommand('xack', 'group', 'mqGroup3', '12132131234-00'); echo var_export($_data, true)."\n";Stream为redis 5.0后新增的数据结构。支持多播的可持久化消息队列,实现借鉴了Kafka设计。

点击查看剩余70%
还可以用sort set
<?php $key = "test"; $redis = new Redis(); //建立一个长链接 $redis->connect('127.0.0.1', 6379); $redis->zAdd( $key, time(), "msgvalue" ); ...
点击查看剩余70%
python如何实现torrent的服务端进行文件分发p2p下载?
如何在浏览器中录制摄像头和麦克风数据为mp4视频保存下载本地?
go如何编写一个类似docker的linux的虚拟容器?
python如何写一个bittorrent的种子下载客户端?
ai能通过看一个网页的交互过程视频自主模仿复制网页编写代码吗?
ai先写功能代码通过chrome mcp来进行测试功能最后ai美化页面这个流程能行吗?
vue在手机端上下拖拽元素的时候如何禁止父元素及body的滚动导致无法拖拽完成?
使用tailwindcss如何去掉响应式自适应?
有没有直接在浏览器中运行的离线linux系统?
nginx如何保留post或get数据进行url重定向?