<?php
/** * created by phpstorm.
* user: huyanping
* date: 14-8-19
* time: 下午12:10
* * 基於redis的訊息佇列封裝
*/class redismessagequeue
else
}/**
* 析構函式,關閉redis鏈結,使用長連線時,最好主動呼叫關閉
*/public function __destruct()
/*** 短連線
*/private function connect()
/*** 長連線
*/public function pconnect()
/*** 關閉鏈結
*/public function close()
/*** 向佇列插入一條資訊
* @param $message
* @return mixed
*/public function put($message)
/*** 向佇列中插入一串資訊
* @param $message
* @return mixed
*/public function puts()
/*** 從佇列頂部獲取一條記錄
* @return mixed
*/public function get()
/*** 選擇資料庫,可以用於區分不同佇列
* @param $database
*/public function select($database)
/*** 獲得佇列狀態,即目前佇列中的訊息數量
* @return mixed
*/public function size()
/*** 獲取某一位置的值,不會刪除該位置的值
* @param $pos
* @return mixed
*/public function view($pos)
/*** 檢查redis擴充套件
* @throws exception
*/protected function check_environment()
}/**
* 獲取key的陣列元素
* @params $key
*/public function getbykey($key)
return $this->redis_server ->lrange($key,0,-1); }
/*** 清除所有資料
*/ public function flushalldata()
/**
* 測試lpush
*/public function lpushdata()
}//佇列實現原理解析---list 該型別為後進先出
/**
用lpush壓入
lpop取出元素並在佇列中刪除該取出的元素
*/$redis = new redismessagequeue();
//$redis->puts(1, 2, 3, 4);
//$redis->puts(5, 6, 7, 8, 9);
//var_dump($redis->get());
//$redis ->flushalldata();
//$redis ->lpushdata();
var_dump($redis->getbykey(''));
感謝: 基於redis構建訊息佇列
一般來說,訊息佇列有兩種場景 一種是發布者訂閱者模式 一種是生產者消費者模式。利用redis這兩種場景的訊息佇列都能夠實現。定義 1 redis作為訊息中介軟體 1 producer consumermode 該方式是借助redis的list結構實現的。producer呼叫redis的lpush往特...
基於redis的延遲訊息佇列設計
需求背景 佇列設計 目前可以考慮使用rabbitmq來滿足需求 但是不打算使用,因為目前太多的業務使用了另外的mq中介軟體。開發前需要考慮的問題?簡單定義乙個訊息資料結構 private string topic topic private string id 自動生成 全域性惟一 snowflak...
基於redis的延遲訊息佇列設計
需求背景 佇列設計 目前可以考慮使用rabbitmq來滿足需求 但是不打算使用,因為目前太多的業務使用了另外的mq中介軟體。開發前需要考慮的問題?簡單定義乙個訊息資料結構 private string topic topic private string id 自動生成 全域性惟一 snowflak...