如何使用phpredis提高消息队列的实时性?

如何使用phpredis提高消息队列的实时性?

数据库存贮都用list形式 要存2个队列 1个用作消息队列保存到数据 还有个 就是用来实时读取数据在redis

 $redis->lpush($queenkey, json_encode($array));
  $redis->lpush($listkey, json_encode($array));

/*消息队列实例*/

public function insertinfo()
 {
  $infos = array('info1' => mt_rand(10,100), 'info2' => mt_rand(10,100));
  $this->insertinfos($infos, 'tutorial-list','tutoriallist');
 }



 public function insertinfos($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));

 }

读取 逻辑当redis key没有了 就读取数据库 然后重新写入list 有的话就读取redis数据

 /*读取实例*/

 public function getinfo()
 {
  $sql = 'select * from mobantestinfo';
  $result = $this->getinfos('tutoriallist', $sql);

  //redis key不为空 直接读取redis
  if(empty($result)){
   //连接本地的 Redis 服务
   $redis = new \Redis();
   $redis->connect('127.0.0.1', 6379);
   // 获取存储的数据并输出
   $result = $redis->lrange('tutoriallist', 0, -1);
   foreach ($result as $k=>$v){
    $result[$k]=json_decode($v,true);
   }
   print_r($result);
   exit();
  }
 }
 
 function getinfos($key, $sql)
 {
  //连接本地的 Redis 服务
  $redis = new \Redis();
  $redis->connect('127.0.0.1', 6379);

  // 获取存储的数据
  $result = $redis->lrange($key, 0, 1);

  if (empty($result)) {
   $VModel = new HuanShanVoteModel();
   $result = $VModel->query($sql);

   //重新将缓存队列的形式放入数据库
    foreach ($result as $k=>$v){
   //这个地方要从右边插入 来保证跟数据库顺序一样
    $redis->rpush($key,json_encode($v));
    }
  } else {
   $result=0;

  }


  return $result;
 }

以上就是小编为大家带来的phpredis提高消息队列的实时性方法(推荐)全部内容了,希望大家多多支持路饭~