phpredis提高消息队列的实时性方法(推荐)
数据库存贮都用list形式要存2个队列1个用作消息队列保存到数据还有个就是用来实时读取数据在redis
$redis->lpush($queenkey,json_encode($array)); $redis->lpush($listkey,json_encode($array));
/*消息队列实例*/
publicfunctioninsertinfo()
{
$infos=array('info1'=>mt_rand(10,100),'info2'=>mt_rand(10,100));
$this->insertinfos($infos,'tutorial-list','tutoriallist');
}
publicfunctioninsertinfos($array,$queenkey,$listkey)
{
//连接本地的Redis服务
$redis=new\Redis();
$redis->connect('127.0.0.1',6379);
//存储数据到列表中
$redis->lpush($queenkey,json_encode($array));
$redis->lpush($listkey,json_encode($array));
}
读取逻辑当rediskey没有了就读取数据库然后重新写入list有的话就读取redis数据
/*读取实例*/
publicfunctiongetinfo()
{
$sql='select*frommobantestinfo';
$result=$this->getinfos('tutoriallist',$sql);
//rediskey不为空直接读取redis
if(empty($result)){
//连接本地的Redis服务
$redis=new\Redis();
$redis->connect('127.0.0.1',6379);
//获取存储的数据并输出
$result=$redis->lrange('tutoriallist',0,-1);
foreach($resultas$k=>$v){
$result[$k]=json_decode($v,true);
}
print_r($result);
exit();
}
}
functiongetinfos($key,$sql)
{
//连接本地的Redis服务
$redis=new\Redis();
$redis->connect('127.0.0.1',6379);
//获取存储的数据
$result=$redis->lrange($key,0,1);
if(empty($result)){
$VModel=newHuanShanVoteModel();
$result=$VModel->query($sql);
//重新将缓存队列的形式放入数据库
foreach($resultas$k=>$v){
//这个地方要从右边插入来保证跟数据库顺序一样
$redis->rpush($key,json_encode($v));
}
}else{
$result=0;
}
return$result;
}
以上就是小编为大家带来的phpredis提高消息队列的实时性方法(推荐)全部内容了,希望大家多多支持毛票票~