php Memcache 中實現訊息佇列

2021-12-29 19:59:12 字數 2134 閱讀 9119

memcache 一般用於快取服務。但是很多時候,比如乙個訊息廣播系統,需要乙個訊息佇列。直接從資料庫取訊息,負載往往不行。如果將整個訊息佇列用乙個key快取到memcache裡面.

對於乙個很大的訊息佇列,頻繁進行進行大資料庫的序列化 和 反序列化,有太耗費。下面是我用php 實現的乙個訊息佇列,只需要在尾部插入乙個資料,就操作尾部,不用操作整個訊息佇列進行讀取,與操作。但是,這個訊息佇列不是執行緒安全的,我只是盡量的避免了衝突的可能性。如果訊息不是非常的密集,比如幾秒鐘才乙個,還是可以考慮這樣使用的。 

如果你要實現執行緒安全的,乙個建議是通過檔案進行鎖定,然後進行操作。下面是**: 

複製** **如下:

class memcache_queue 

$this->memcache = $memcache; 

$this->name = $name; 

$this->prefix = $prefix; 

$this->maxsize = $maxsize; 

$this->front = 0; 

$this->real = 0; 

$this->size = 0; 

} function __get($name) 

function __set($name, $value) 

function isempty() 

function isfull() 

function enqueue($data) 

$this->increment("size"); 

$this->set($this->real, $data); 

$this->set("real", ($this->real + 1) % $this->maxsize); 

return $this; 

} function dequeue() 

$this->decrement("size"); 

$this->delete($this->front); 

$this->set("front", ($this->front + 1) % $this->maxsize); 

return $this; 

} function gettop() 

function getall() 

function getpage($offset = 0, $limit = 0) 

$keys = $this->getkeybypos(($this->front + $offset) % $this->maxsize); 

$num = 1; 

for ($pos = ($this->front + $offset + 1) % $this->maxsize; $pos != $this->real; $pos = ($pos + 1) % $this->maxsize)  } 

return array_values($this->memcache->get($keys)); 

} function makeempty() 

$this->delete("real"); 

$this->delete("front"); 

$this->delete("size"); 

$this->delete("maxsize"); 

} private function getallkeys() 

$keys = $this->getkeybypos($this->front); 

for ($pos = ($this->front + 1) % $this->maxsize; $pos != $this->real; $pos = ($pos + 1) % $this->maxsize) 

return $keys; 

} private function add($pos, $data) 

private function increment($pos) 

private function decrement($pos) 

private function set($pos, $data) 

private function get($pos) 

private function delete($pos) 

private function getkeybypos($pos)  }

高斯消元演算法實現(Java)

1 選擇主元 即選擇對角元素,保證其為所在列的最大,避免大數除以小數出現溢位,其實是避免其值為0 2 當前主元不為最大值,交換兩行 3 判斷主元是否為0,若是則不是唯一解 4 逐行消元 5 對角線元素歸一化 6 回代消除對角線之上的元素。這個是主方法,主要是使用一維陣列實現,對應的方法引數要給出方程...

程式設計實現高斯消元法

計算機計算線性方程組的解一般是用高斯消元法完成的.我寫了乙個簡單的程式,輸入乙個 n n 1 的增廣矩陣,求解各未知數的值.只能解答兩種情況 1.線性方程組有唯一解 2.線性方程組無解 時間複雜度為o n 3 include include const double esp 1e 8 using n...

高斯消元法的MPI實現

數學上,高斯消元法 或譯 高斯消去法 是線性代數規劃中的乙個演算法,可用來為線性方程組求解。但其演算法十分複雜,不常用於加減消元法,求出矩陣的秩,以及求出可逆方陣的逆矩陣。不過,如果有過百萬條等式時,這個演算法會十分省時。一些極大的方程組通常會用迭代法以及花式消元來解決。當用於乙個矩陣時,高斯消元法...