关于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"
相关文章
相关标签/搜索