php redis stream消息队列操作大全代码

代码语言:phpcli

所属分类:其他

代码描述:php redis stream消息队列操作大全代码

代码标签: 消息 队列 操作 大全

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php
//连接reids
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

//xadd:追加消息
//xdel:删除消息,删除标志位,不影响消息总长度
//xrange:消息列表,过滤已删除的消息
//xlen:消息长度
//del: 删除所有消息

$redis->rawCommand('del', 'bfw');

// 星号表示自动生成id,后面参数key,value
$redis->rawCommand('xadd', 'bfw', '*', 'name', 'user1', 'age', '20');
$redis->rawCommand('xadd', 'bfw', '*', 'name', 'user2', 'age', '18');
$redis->rawCommand('xadd', 'bfw', '*', 'name', 'user3', 'age', '19');
$redis->rawCommand('xadd', 'bfw', '*', 'name', 'user4', 'age', '19');

//maxlen 定长长度,将老消息干掉,确保链表不会超过指定长度
$redis->rawCommand('xadd', 'bfw', 'maxlen', '3', '*', 'name', 'user5', 'age', '19');

$res = $redis->rawCommand('xlen', 'bfw');
echo "<pre>";
var_dump($res);
echo '\n';

// -最小值 +最大值
$res = $redis->rawCommand('xrange', 'bfw', '-', '+');
print_r($res);
echo '\n';

$id = $res[1][0];

// 指定最小消息列表
$res = $redis->rawCommand('xrange', 'bfw', $id, '+');
// var_dump($res);
// echo '\n';

// 指定最大消息列表
$res = $redis->rawCommand('xrange', 'bfw', '-', $id);
// var_dump($res);
// echo '\n';

// 指定最大消息列表
$res = $redis->rawCommand('xrange', 'bfw', '-', $id);
// var_dump($res);
// echo '\n';

/************************独立消费************************/

//从stream中头部读取两条消息
$res = $redis->rawCommand('xread', 'count', '2', 'streams', 'bfw', '0-0');
// var_dump($res);
// echo '\n';

//从尾部读取一条消息,这里不会返回任何消息
$res = $redis->rawCommand('xread', 'count', '1', 'streams', 'bfw', '$');
// var_dump($res);
// echo '\n';

//block 0 表示永久阻塞,直到消息到来,block 1000表示阻塞1秒,如果1秒没新消息,返回null
//从尾部阻塞等待消息到来,然后新开一个窗口塞消息,这时候阻塞解除返回新消息内容
// $res = $redis->rawCommand('xread','block','0','count','1','streams','bfw','$');
// var_dump($res);
// echo '\n';


/************************消费组************************/


// 星号表示自动生成id,后面参数key,value
$redis->rawCommand('xadd', 'mq', '*', 'msg', '1');
$redis->rawCommand('xadd', 'mq', '*', 'msg', '2');
$redis->rawCommand('xadd', 'mq', '*', 'msg', '3');
$redis->rawCommand('xadd', 'mq', '*', 'msg', '4');
$redis->rawCommand('xadd', 'mq', '*', 'msg', '5');


//创建消费组mqGroup  为消息队列 mq 从第一条开始消费
$redis->rawCommand('xgroup', 'create', 'mq', 'mqGroup', '0');

//从从尾部开始消费
//$redis->rawCommand('xgroup','create','mq'.........完整代码请登录后点击上方下载按钮下载查看

网友评论0