基於Redis的訊息佇列封裝和測試

2021-07-01 20:58:56 字數 1777 閱讀 5521

<?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...