首页 > 代码库 > memcache

memcache

memcached是一个软件,而PHP包括了memcache和memcached 2个扩展,这2个接口使PHP程序代码能够操作和使用memcached这个软件。

一,php扩展memcache和memcached区别

1.        目前大多数php环境里使用的都是不带d的memcache版本,这个版本出的比较早,是一个原生版本,完全在php框架内开发的。与之对应的带d的memcached是建立在libmemcached的基础上,所以相对来说,memcached版本的功能更全一些。

memcache:http://cn2.php.net/manual/en/book.memcache.php

memcached:http://cn2.php.net/manual/en/book.memcached.php

2.        Memcache是原生实现的,支持OO和非OO两套接口并存。而memcached是使用libmemcached,只支持OO接口。

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

4.        memcached支持Binary Protocol,而memcache不支持。这意味着memcached会有更高的性能。不过memcached目前还不支持长连接。

二,memcached简介

memcached是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问。

memcached也提供用于通信对话session(session_handler)的处理。

更多Memcached的相关信息可以到 http://www.memcached.org/ 查阅。

memcache这个PHP模块的有关说明:

memcache模块在php.ini中的配置项列表

帮助
1
2
3
4
5
6
7
8
memcache.allow_failover 默认值“1”  Available since memcache 2.0.2.
memcache.max_failover_attempts 默认值"20"  Available since memcache 2.1.0.
memcache.chunk_size 默认值"8192"  Available since memcache 2.0.2.
memcache.default_port 默认值"11211"  LL Available since memcache 2.0.2.
memcache.hash_strategy 默认值"standard"  Available since memcache 2.2.0.
memcache.hash_function 默认值"crc32"  Available since memcache 2.2.0.
session.save_handler 默认值"files"  Supported since memcache 2.1.2
session.save_path 默认值为空  Supported since memcache 2.1.2

以下是各PHP.ini相关配置项的简要解释
memcache.allow_failover Boolean
在错误时是否透明的故障转移到其他服务器上处理(注:故障转移是动词)。

memcache.max_failover_attempts integer
定义服务器的数量类设置和获取数据,只联合 memcache.allow_failover 一同使用。

memcache.chunk_size integer
数据将会被分成指定大小(chunk_size)的块来传输,这个值(chunk_size)越小,写操作的请求就越多,如果发现其他的无法解释的减速,请试着将这个值增大到32768.

memcache.default_port string
当连接memcache服务器的时候,如果没有指定端口这个默认的tcp端口将被用。

memcache.hash_strategy string
控制在映射 key 到服务器时使用哪种策略。设置这个值一致能使hash 算法始终如一的使用于服务器接受添加或者删除池中变量时将不会被重新映射。设置这个值以标准的结果在旧的策略被使用时。

memcache.hash_function string
控制哪种 hsah 函数被应用于 key映射 到服务器过程中,默认值“crc32”使用 CRC32 算法,而“fnv”则表示使用 FNV-1a 算法。

session.save_handler string
通过设置这个值为memcache来确定使用 memcache 用于通信对话的处理(session handler)。

session.save_path string
定义用于通话存储的各服务器链接的分隔符号,例如:“tcp://host1:11211, tcp://host2:11211”。
每服务器个链接可以包含被接受于该服务器的参数,比较类似使用 Memcache::addServer() 来添加的服务器,例如:“tcp://host1:11211?persistent=1&weight=1&timeout=1&retry_interval=15”。

memcache模块常量列表
MEMCACHE_COMPRESSED integer 用于调整在使用 Memcache::set(), Memcache::add() 和 Memcache::replace() 几个函数时的压缩比率。
MEMCACHE_HAVE_SESSION integer 如果通信对话的处理(session handler)被允许使用其值为 1,其他情况值为 0。

【注意】memcache以及memcached相关扩展和memcached是两回事。如果不安装memcached软件,那么,即使PHP成功安装、加载了memcache模块也是没有用的。
当然有一种情况memcache模块可以使用,那就是memcached的安装在其它服务器,PHP可以通过memcache模块调用到它(memcached缓存服务器)

也就是说,如果想正常使用PHP的memcache模块功能,就得有安装有memcached软件的服务器,本机或者其它机器。

一个测试memcache是否能正常使用的PHP代码:

帮助
1
2
3
4
5
6
7
<?php
$mem = new Memcache;
$mem->connect(‘127.0.0.1‘, 11211);
$mem->set(‘key‘, ‘This is a test!‘, 0, 60);
$val = $mem->get(‘key‘);
echo $val;
?>

memcache及php之memcached的扩展安装:http://iceeggplant.blog.51cto.com/1446843/81957

memcache