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)}
PHP環境下memcache安裝
本次安裝環境是windows,開發環境是phpstudy 32位系統 1.2.6版本 32位系統 1.4.4版本 64位系統 1.4.4版本 32位系統 1.4.5版本 64位系統 1.4.5版本 memcached安裝 版本 1.4.5,可當作服務memcached.exe d install 安...
linux下PHP中新增memcache擴充套件支援
yum install libevent devel wget tar zxvf memcached 1.4.5.tar.gz configure prefix usr local memcached build i686 pc linux gnu 這一步會看到缺少gcc yum install g...
Linux下php安裝memcache擴充套件
安裝環境 centos 6.4 php擴充套件memcache的作用是為了支援memcached資料庫快取伺服器,下面是安裝方法。檔名 memcache 3.0.8.tgz 2 安裝 root vm15 local tar zxvf memcache 3.0.8.tgz root vm15 loca...