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提高消息队列的实时性方法(推荐)全部内容了,希望大家多多支持毛票票~