memcache和memcached區別:php
Memcache是什麼?
Memcache是一個自由和開放源代碼、高性能、分配的內存對象緩存系統。用於加速動態web應用程序,減輕數據庫負載。它能夠應對任意多個鏈接,使用 非阻塞的網絡IO。因爲它的工做機制是在內存中開闢一塊空間,而後創建一個Hash表,Memcached自管理這些Hash表。Memcache官方網站:http://memcached.org/web
Memcached又是什麼?
Memcache是該系統的項目名稱,Memcached是該系統的主程序文件(字母d能夠理解爲daemon),以守護程序方式運行於一個或多個服務器中,隨時接受客戶端的鏈接操做,使用共享內存存取數據。數據庫
memcache客戶端(php)
PHP有兩個memcache客戶端:php memcache和php memcached。
php memcache獨立用php實現,是老客戶端,從咱們實踐中已發現有多個問題,並且功能少,屬性也可設置的少;
memcache的下載地址:http://pecl.php.net/package/memcache
php memcached是基於原生的c的libmemcached的擴展,更加完善,建議替換爲php memcached。
memcached的下載地址:http://pecl.php.net/package/memcached緩存
因爲在項目後期會引入緩存策略對角色的數據進行緩存,而如今咱們大部分緩存都使用文件緩存,開發過網頁遊戲的朋友們大都知道,語言包和遊戲相關的數 據大部分不常常改動,有時候幾個星期不須要更新,只是在進行版本更新的時候才從新生成一次數據緩存,而角色的數據和數值時刻在變化着,會頻繁的更新和操 做,採用文件緩存會頻繁地進行I/O操做,在這個功能上文件緩存就不太適合了,因此對於角色的數據採起內存緩存策略在這裏就比較合適。
對於內存緩存,比較經常使用的有兩種memcache和memcached擴展。而memcached和memcache的守護進程memcached同名, 比較容易引發混淆,甚至提到memcached,有些人第一想到的是後臺的守護進程,這裏仍是有必要分析一下二者之間的區別,如下觀點僅是我的觀點,但願 朋友進行補充和更正。
首先咱們能夠從php官方手冊上能夠清晰的看到二者的區別:
memcache:http://cn2.php.net/manual/en/book.memcache.php
memcached:http://cn2.php.net/manual/en/book.memcached.php服務器
memcache是徹底在PHP框架內開發的,memecached是使用libmemcached的。從手冊上看,memcached 會比 memcache 多幾個方法,使用方式上都差很少。網絡
memcache是原生實現的,可是使用libmemcached的memached只支持OO接口,而 memcache則是OO和非OO兩套接口並存,之後隨着memcached服務器端的改進,這個lib也一定會立刻跟進的。而memcache卻不必定 能作到按時跟進。框架
memcached,還有個很是稱讚的地方,就是flag不是在操做的時候設置了。而是有一個統一的setOption()。memcached 實現了更多的 memcached 協議(畢竟是基於 libmemcached 庫的)。memcached
這裏有另一個對比表,很明顯,用 memcached 會讓人放心不少:http://code.google.com/p/memcached/wiki/PHPClientComparison性能
差異比較大的一點是,memcached 支持 Binary Protocol,而 memcache 不支持,意味着 memcached 會有更高的性能。不過,還須要注意的是,memcached 目前還不支持長鏈接。網站