程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Redis教程 >> 關於Redis >> phpredis提高消息隊列的實時性方法(推薦)

phpredis提高消息隊列的實時性方法(推薦)

編輯:關於Redis

數據庫存貯都用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提高消息隊列的實時性方法(推薦)全部內容了,希望大家多多支持~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved