日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

php 内存队列,memcache构建简单的内存消息队列_PHP教程

發(fā)布時間:2024/9/27 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 内存队列,memcache构建简单的内存消息队列_PHP教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文章來給各位同學(xué)介紹使用memcache構(gòu)建簡單的內(nèi)存消息隊(duì)列,用一個比較不錯的實(shí)例來給大家介紹,希望此方法對大家有幫助哦。

memcache功能太簡單了,只能 set get 和delete, 只能保存key-value的數(shù)據(jù), 不能保存列表。 當(dāng)然也可以把一個列表給序列化了之后存進(jìn)memcache, 但是會存在并發(fā)的問題, 每次保存數(shù)據(jù)(插隊(duì)或者出隊(duì))的時候都要給數(shù)據(jù)加鎖,在高并發(fā)的情況下很難保證數(shù)據(jù)的一致性!

但是memcache 有一個 increment 的操作,為某一個鍵對應(yīng)的值進(jìn)行加1(實(shí)際上是加法運(yùn)算, 默認(rèn)加1), 這個操作是原子性的, 所以我們可以通過這個來維護(hù)一個自增的id來保證數(shù)據(jù)的唯一。 再加上兩個指針來維護(hù)起始鍵值, 這樣就構(gòu)建了一個簡單的但相隊(duì)列!!

上代碼:

代碼如下

復(fù)制代碼

關(guān)于memcached的一些事情

內(nèi)存存儲方式(slab allocator)

memcached的數(shù)據(jù)存儲方式為slab allocator即數(shù)據(jù)分片, 在服務(wù)啟動的時候先把內(nèi)存分成不同大小的 chunk, 當(dāng)有數(shù)據(jù)過來的時候來存儲到一個合適大小的chunk當(dāng)中

之前版本是直接分配內(nèi)存, 導(dǎo)致內(nèi)存碎片 隨機(jī)查找等問題。。。

數(shù)據(jù)過期刪除機(jī)制

memcached在數(shù)據(jù)過期之后,并不會去刪除數(shù)據(jù), 但是不能訪問過期的數(shù)據(jù), 過期數(shù)據(jù)占用的空間會被重復(fù)利用

memcached采用lazy expiration.不會去主動掃描一個數(shù)據(jù)項(xiàng)是否過期, 而是在數(shù)據(jù)get的時候判斷是否已經(jīng)過期.

刪除的算法是LRU(Least Recently Used) , 優(yōu)先刪除最近使用較少的數(shù)據(jù)

memcached的分布式機(jī)制

雖說memcached是一個分布式的緩存, 但是memcached本身并沒有實(shí)現(xiàn)任何分布式的機(jī)制, 分布式的功能主要是由客戶端來實(shí)現(xiàn)的。

程序通過addserver增加多個memcahced服務(wù)到客戶端(memcache擴(kuò)展), 在存取數(shù)據(jù)之前,客戶端會先通過hash算法得到存儲數(shù)據(jù)的節(jié)點(diǎn), 然后再去存取數(shù)據(jù), 當(dāng)其中一臺memcached服務(wù)器掛掉或者新增一臺memcached服務(wù)器, hash算法得到的存儲數(shù)據(jù)的節(jié)點(diǎn)就會變化, 去新的服務(wù)器上去存取數(shù)據(jù)。

http://www.bkjia.com/PHPjc/632905.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632905.htmlTechArticle本文章來給各位同學(xué)介紹使用memcache構(gòu)建簡單的內(nèi)存消息隊(duì)列,用一個比較不錯的實(shí)例來給大家介紹,希望此方法對大家有幫助哦。 memcache功...

總結(jié)

以上是生活随笔為你收集整理的php 内存队列,memcache构建简单的内存消息队列_PHP教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。