php PHP操作Memcache基本函式

2021-09-21 00:25:56 字數 2564 閱讀 2991

#php php操作memcache基本函式#

2:memcache 函式

memcache_debug — 轉換除錯輸出的開/關

memcache_add_server()

memcache_close() 

memcache_connect('memcache_host', 11211)

memcache_delete() 

memcache_flush() 

memcache_set() 

memcache_get_version() 

memcache_replace() 

3:memcache模組同時提供了乙個session 處理器 :php使用memcache來儲存session

二:為什麼和怎麼使用memcache 

原因:使用memcache的**一般流量都是比較大的,為了緩解資料庫的壓力,

讓memcache作為乙個快取區域,把部分資訊儲存在記憶體中,在前端能

夠迅速的進行訪問。那麼一般的焦點就是集中在如何分擔資料庫壓力

和進行分布式,畢竟單台memcache的記憶體容量的有限的

1:分布式應用 

memcache實現分布式方式。例如:我們的key可以適當進行有規律的封裝,

比如以user為主的**來說,每個使用者都有user id,那麼可以按照固定

的id來進行提取和訪問,比如1開頭的使用者儲存在第一台memcache伺服器上,以2開頭的使用者的資料儲存在第二胎mecache伺服器上,訪問資料都先按照user id來進行相應的轉換和訪問。 

但是這個有缺點,就是需要對user id進行判斷,如果業務不一致,或者

其他型別的應用,可能不是那麼合適,那麼可以根據自己的實際業務來進

行考慮,或者去想更合適的方法。 

2:減少資料庫壓力 

用memcache來分擔資料庫的壓力。我們需要一種改動比較小,並且能夠不會

大規模改變前端的方式來進行改變目前的架構。 

我考慮的一種簡單方法: 

後端的資料庫操作模組,把所有的select操作提取出來(update/delete/insert不管)

,然後把對應的sql進行相應的hash演算法計算得出乙個hash資料key

(比如md5或者sha),然後把這個key去memcache中查詢資料,

如果這個資料不存在,說明還沒寫入到快取中,那麼從資料庫把資料提取出

來,乙個是陣列類格式,然後把資料在set到memcache中,key就是這個

sql的hash值,然後相應的設定乙個失效時間,比如乙個小時,那麼乙個小時

中的資料都是從快取中提取的,有效減少資料庫的壓力。缺點是資料不實時,

當資料做了修改以後,無法實時到前端顯示,並且還有可能對記憶體占用比較

大,畢竟每次select出來的資料數量可能比較巨大,這個是需要考慮的因素。

三、memcache的安全 

如果伺服器是直接暴露在網際網路上的話是比較危險,輕則資料洩露被其他無關人員查

,重則伺服器被入侵,因為mecache是以root許可權執行的,況且裡面可能存在

一些我們未知的bug或者是緩衝區溢位的情況,這些都是我們未知的,所以危

險性是可以預見的。

1:內網訪問 

最好把兩台伺服器之間的訪問是內網形態的,一般是web伺服器跟memcache服

務器之間。普遍的伺服器都是有兩塊網絡卡,一塊指向網際網路,一塊指向內網,

那麼就讓web伺服器通過內網的網絡卡來訪問memcache伺服器,我們memcache的

伺服器上啟動的時候就監聽內網的ip位址和埠,內網間的訪問能夠有效阻

止其他非法的訪問。

複製** **如下:

# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -p /tmp/memcached.pid

memcache伺服器端設定監聽通過內網的192.168.0.200的ip的11211埠,占用1024mb記憶體,並且允許最大1024個併發連線。 

2:設定防火牆 

防火牆是簡單有效的方式,如果卻是兩台伺服器都是掛在網的,並且需要通

過外網ip來訪問memcache的話,那麼可以考慮使用防火牆或者**程式來過

濾非法訪問。一般我們在linux下可以使用iptables或者freebsd下的ipfw來

指定一些規則防止一些非法的訪問,比如我們可以設定只允許我們的web伺服器來訪問我們memcache伺服器,同時阻止其他的訪問。

複製** **如下:

# iptables -f 

# iptables -p input drop 

# iptables -a input -p tcp -s 192.168.0.2 –dport 11211 -j accept 

# iptables -a input -p udp -s 192.168.0.2 –dport 11211 -j accept

上面的iptables規則就是只允許192.168.0.2這台web伺服器對memcache服務

器的訪問,能夠有效的阻止一些非法訪問,相應的也可以增加一些其他的規

則來加強安全性,這個可以根據自己的需要來做。 

eAccelerator與memcached的區別

歡迎各位加入群 206981178,共同學習 eaccelerator和memcached,是目前較為主流的兩個可使用在php之中的快取加速工具.eaccelerator專門為php開發,而memcached不僅僅用在php之中,其他所有的語言都可以使用.eaccelerator的主要功能 1.快取...

PHP Windows下使用Memcached擴充套件

github上發現了乙個很好用的小檔案,能夠 模擬出php memcached.dll的php memcached擴充套件。php memcached client 已知pcel有兩個memcache client的擴充套件,乙個是memcache,乙個是memcached,他們的實現方式不同,後者...

PHP PHP 資料庫操作 mysqli

server 127.0.0.1 username username pass password con new mysqli server,username,pass db name 建立乙個資料庫鏈結,如果帶上後面引數 db name 建立乙個到資料庫 db name的鏈結,如果後面不帶引數,建...