国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

PHP實現基于Redis的MessageQueue隊列封裝操作示例

2024-05-06 15:42:36
字體:
來源:轉載
供稿:網友

本文實例講述了PHP實現基于Redis的MessageQueue隊列封裝操作。分享給大家供大家參考,具體如下:

Redis的鏈表List可以用來做鏈表,高并發的特性非常適合做分布式的并行消息傳遞。

項目地址:https://github.com/huyanping/Zebra-PHP-Framework

左進右出

$redis->lPush($key, $value);$redis->rPop($key);

以下程序已在生產環境中正式使用。

基于Redis的PHP消息隊列封裝

<?php/** * Created by PhpStorm. * User: huyanping * Date: 14-8-19 * Time: 下午12:10 * * 基于Redis的消息隊列封裝 */namespace Zebra/MessageQueue;class RedisMessageQueue implements IMessageQueue{  protected $redis_server;  protected $server;  protected $port;  /**   * @var 消息隊列標志   */  protected $key;  /**   * 構造隊列,創建redis鏈接   * @param $server_config   * @param $key   * @param bool $p_connect   */  public function __construct($server_config = array('IP' => '127.0.0.1', 'PORT' => '6379'), $key = 'redis_message_queue', $p_connect = false)  {    if (empty($key))      throw new /Exception('message queue key can not be empty');    $this->server = $server_config['IP'];    $this->port = $server_config['PORT'];    $this->key = $key;    $this->check_environment();    if ($p_connect) {      $this->pconnect();    } else {      $this->connect();    }  }  /**   * 析構函數,關閉redis鏈接,使用長連接時,最好主動調用關閉   */  public function __destruct()  {    $this->close();  }  /**   * 短連接   */  private function connect()  {    $this->redis_server = new /Redis();    $this->redis_server->connect($this->server, $this->port);  }  /**   * 長連接   */  public function pconnect()  {    $this->redis_server = new /Redis();    $this->redis_server->pconnect($this->server, $this->port);  }  /**   * 關閉鏈接   */  public function close()  {    $this->redis_server->close();  }  /**   * 向隊列插入一條信息   * @param $message   * @return mixed   */  public function put($message)  {    return $this->redis_server->lPush($this->key, $message);  }  /**   * 向隊列中插入一串信息   * @param $message   * @return mixed   */  public function puts(){    $params = func_get_args();    $message_array = array_merge(array($this->key), $params);    return call_user_func_array(array($this->redis_server, 'lPush'), $message_array);  }  /**   * 從隊列頂部獲取一條記錄   * @return mixed   */  public function get()  {    return $this->redis_server->lPop($this->key);  }  /**   * 選擇數據庫,可以用于區分不同隊列   * @param $database   */  public function select($database)  {    $this->redis_server->select($database);  }  /**   * 獲得隊列狀態,即目前隊列中的消息數量   * @return mixed   */  public function size()  {    return $this->redis_server->lSize($this->key);  }  /**   * 獲取某一位置的值,不會刪除該位置的值   * @param $pos   * @return mixed   */  public function view($pos)  {    return $this->redis_server->lGet($this->key, $pos);  }  /**   * 檢查Redis擴展   * @throws Exception   */  protected function check_environment()  {    if (!/extension_loaded('redis')) {      throw new /Exception('Redis extension not loaded');    }  }}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 伊宁县| 托克托县| 兴业县| 黄陵县| 绩溪县| 梅州市| 湾仔区| 米泉市| 屯门区| 八宿县| 边坝县| 德惠市| 宁安市| 黔江区| 闸北区| 资阳市| 山东省| 秀山| 嘉祥县| 桂东县| 临西县| 平阳县| 金门县| 宝丰县| 奉贤区| 平山县| 青岛市| 广元市| 曲靖市| 阜宁县| 行唐县| 龙山县| 阿城市| 临沧市| 通化县| 巴林右旗| 河源市| 洛阳市| 通道| 乐都县| 石屏县|