#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的鏈結,如果後面不帶引數,建...