關於PHP擴展memcache和memcached的區別

Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它經過在內存中緩存數據和對象來減小讀取數據庫的次數,從而提升動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,可是客戶端能夠用任何語言來編寫,並經過memcached協議與守護進程通訊。php

PHP的客戶端目前經常使用的有兩個,一個是memcache,另外一個是memcached,兩個客戶端只差了一個字母,這兩個的區別是什麼呢?算法

  • 服務器中的memcached進程跑的是memcached服務;
  • 實現了memcached接口的PHP擴展memcache,在PHP框架以內實現的;
  • 實現了memcached接口的PHP擴展memcached,基於libmemcached實現;

手冊是最好的說明(你們沒事仍是多看看官方說明吧):
memcached
memcached類官方說明
memcached擴展包數據庫

memcache
memcache類官方說明
memcache擴展包緩存

下面是PHP官網給予的相應解釋 : For those confuse about the memcached extension and the memcache extension, the short story is that both of them are clients of memcached server, and the memcached extension offer more features than the memcache extension.服務器

大體意思是memcached extension和memcache extension都是memcached server的客戶端,memcached extension比memcache extension的功能要多。session

兩個都支持一致性hash算法:框架

  • memcache
# 修改php.ini
[Memcache]
Memcache.allow_failover = 1 
Memcache.hash_strategy = consistent
Memcache.hash_function = crc32
  • memcached
$memcachedObj = new memcached();
$memcachedObj->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$memcachedObj->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);

另外說一下session在memcached(注意這個是指memcached服務)中的存儲,下面是配置tcp

# memcache:
session.save_handler = memcache
session.save_path = "tcp://localhost:11211" 
# memcached:
session.save_handler = memcached
session.save_path = "localhost:11211"
相關文章
相關標籤/搜索