2014年7月25日星期五

PHP中的Memcache和Memcached扩展的区别

PHP PECL 中的 Memcache 和 Memcached 扩展的区别

最近打算在线上业务部署 memcache 服务, 公司的网站使用的是 php 编写,在查找 PECL 的扩展的时候,发现有 memcache 和 memcached 两个扩展,有些迷糊这两个扩展的区别,google 一下解决问题

首先,这两个扩展都是连接的 memcache server 的 php 客户端实现,这两个扩展可以同时安装并启用,并且两者在使用方法上相差不大。

其次, memcached 是基于 memcache server 官方维护的 libmemcached 库来实现的,有人认为它的性能会更好些。

下面是关于的两个扩展库的基本使用的方法:

1. PECL memcached 的使用用例
具体

// create PECL memcached Object
$m = new Memcached();

// add a server, connection is established lazily as far as I know
$m->addServer( 'localhost', 11211 );

// set values, those are written into your server's memory using the memcached server
$m->set( 'integer', 1 );
$m->set( 'intIncrement', 1 );
$m->set( 'intDecrement', 1 );
$m->set( 'string', 'I am a string' );
$m->set( 'array', array( 'a', 'b', 'c' ) );

// increment
$m->increment( 'intIncrement' );

// decrement
$m->decrement( 'intDecrement' );

// get values again
var_dump ( $m->get( 'integer' ) );
var_dump ( $m->get( 'intIncrement' ) );
var_dump ( $m->get( 'intDecrement' ) );
var_dump ( $m->get( 'string' ) );
var_dump ( $m->get( 'array' ) );

// delete values
$m->delete( 'integer' );
$m->delete( 'intIncrement' );
$m->delete( 'intDecrement' );
$m->delete( 'string' );
$m->delete( 'array' );

// close connection
$m->close();


2. PECL memcache 的使用用例
// create PECL memcache object
$m = new Memcache;

// connect to the memcached server
$m->connect('localhost', 11211);

// set values
$m->set( 'integer', 1 );
$m->set( 'intIncrement', 1 );
$m->set( 'intDecrement', 1 );
$m->set( 'string', 'I am a string' );
$m->set( 'array', array( 'a', 'b', 'c' ) );

// increment
$m->increment( 'intIncrement' );

// decrement
$m->decrement( 'intDecrement' );

// get values again
var_dump ( $m->get( 'integer' ) );
var_dump ( $m->get( 'intIncrement' ) );
var_dump ( $m->get( 'intDecrement' ) );
var_dump ( $m->get( 'string' ) );
var_dump ( $m->get( 'array' ) );

// delete values
$m->delete( 'integer' );
$m->delete( 'intIncrement' );
$m->delete( 'intDecrement' );
$m->delete( 'string' );
$m->delete( 'array' );

// close connection
$m->close();

参考链接:http://stackoverflow.com/questions/13974818/pecl-memcache-and-pecl-memcached

没有评论:

发表评论