php-- memcache 与 memcached支架的区别与共同点 个人整理

时间:2023-03-09 08:13:11
php-- memcache 与 memcached支架的区别与共同点  个人整理

首先声明:memcache 与 memcached 之间没有关系

1.概念相似

MemCache是一个*、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。

memcached 是高效、快速的分布式内存对象缓存系统,主要用于加速 WEB 动态应用程序。

对于内存缓存,比较常用的有两种memcache和memcached扩展。而memcached和memcache的守护进程memcached同名, 比较容易引起混淆,甚至提到memcached,有些人第一想到的是后台的守护进程,这里还是有必要分析一下两者之间的区别,以下观点仅是个人观点,希望 朋友进行补充和更正。

2.手册上的区别

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中的memcacahed:

Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据。

【补充:】

libmemcached 是一个 memcached 的库,客户端库,C 和 C++ 语言实现的客户端库,具有低内存占用率、线程安全、并提供对memcached功能的全面支持。它还采用 多种命令行工具: memcat , memflush , memrm , memstat ,并memslap (负载代)。程序库一直在设计,让不同的散列方法对密钥,分割的钥匙,并使用统一的散列分配。

memcache是原生实现的,但是使用libmemcached的memached只支持OO接口,而
memcache则是OO和非OO两套接口并存,以后随着memcached服务器端的改进,这个lib也必定会马上跟进的。而memcache却不一定
能做到按时跟进。

3.代码区别

memcached,还有个非常称赞的地方,就是flag不是在操作的时候设置了。而是有一个统一的setOption()。memcached 实现了更多的 memcached 协议(毕竟是基于 libmemcached 库的)。

这里有另外一个对比表,很明显,用 memcached 会让人放心很多:http://code.google.com/p/memcached/wiki/PHPClientComparison

差别比较大的一点是,memcached 支持 Binary Protocol,而 memcache 不支持,意味着 memcached 会有更高的性能。不过,还需要注意的是,memcached 目前还不支持长连接。

memcache代码:

memcache函数所有的方法列表如下:

Memcache::add – 添加一个值,如果已经存在,则返回false

Memcache::addServer – 添加一个可供使用的服务器地址

Memcache::close – 关闭一个Memcache对象

Memcache::connect – 创建一个Memcache对象

memcache_debug – 控制调试功能

Memcache::decrement – 对保存的某个key中的值进行减法操作

Memcache::delete – 删除一个key值

Memcache::flush – 清除所有缓存的数据

Memcache::get – 获取一个key值

Memcache::getExtendedStats – 获取进程池中所有进程的运行系统统计

Memcache::getServerStatus – 获取运行服务器的参数

Memcache::getStats – 返回服务器的一些运行统计信息

Memcache::getVersion – 返回运行的Memcache的版本信息

Memcache::increment – 对保存的某个key中的值进行加法操作

Memcache::pconnect – 创建一个Memcache的持久连接对象

Memcache::replace -对一个已有的key进行覆写操作

Memcache::set – 添加一个值,如果已经存在,则覆写

Memcache::setCompressThreshold – 对大于某一大小的数据进行压缩

Memcache::setServerParams – 在运行时修改服务器的参数