Memcached的常用操作

Memcached系统类

添加memcached服务器并查看服务器的运行状态

php

$m = new Memcached();
/*添加memcached服务器,参数为ip和端口号*/
$m->addServer('127.0.0.1',11211);

/*也可以用如下方式一次性添加多台服务器*/
/*
$array = array(
            array('127.0.0.1',11211),
            array('127.0.0.2',11211),
         )
$m->addServers($array);
*/

//显示memcached的运行状态
print_r($m->getStats());

运行结果如下所示:

Array
(
    [127.0.0.1:11211] => Array
        (
            [pid] => 1724
            [uptime] => 101969
            [threads] => 4
            [time] => 1476102816
            [pointer_size] => 32
            [rusage_user_seconds] => 12
            [rusage_user_microseconds] => 196145
            [rusage_system_seconds] => 7
            [rusage_system_microseconds] => 282892
            [curr_items] => 0
            [total_items] => 0
            [limit_maxbytes] => 134217728
            [curr_connections] => 5
            [total_connections] => 39
            [connection_structures] => 6
            [bytes] => 0
            [cmd_get] => 0
            [cmd_set] => 0
            [get_hits] => 0
            [get_misses] => 0
            [evictions] => 0
            [bytes_read] => 617
            [bytes_written] => 36920
            [version] => 1.4.31
        )

)

查看服务器端的版本号

print_r($m->getVersion());

运行结果为:

Array ( [127.0.0.1:11211] => 1.4.31 )

数据类

add()方法

php

$m = new Memcached();
/*添加memcached服务器,参数为ip和端口号*/
$m->addServer('127.0.0.1',11211);

/*add(),第一个参数为key值,第二个参数为value值,第三个参数为是否压缩,第四个参数为有效期,如果为0,则永久有效
此例中为600则表示600s的有效期*/
$m->add('mkey','mvalue',0,600);

/*根据key值得到value值*/
echo $m->get('mkey');

运行结果为:

mvalue

如果对同一个key值进行两次add操作,第二次不会覆盖第一次的

$m->add('mkey','mvalue',600);
$m->add('mkey','mvalue2',600);

/*根据key值得到value值*/
echo $m->get('mkey');

运行结果仍为mvalue

replace()方法

如果要修改add添加的值,则

$m->add('mkey','mvalue',600);
$m->replace('mkey','mvalue2',0,600);

echo $m->get('mkey');

运行结果为

mvalue2

set()方法

当数据不存在的时候,新建,存在的时候,覆盖

php

$m = new Memcached();
/*添加memcached服务器,参数为ip和端口号*/
$m->addServer('127.0.0.1',11211);

/*add(),第一个参数为key值,第二个参数为value值,第三个参数为是否压缩,第四个参数为有效期,如果为0,则永久有效
此例中为600则表示600s的有效期*/
$m->set('mkey','mvalue',0,600);

/*根据key值得到value值*/
echo $m->get('mkey');

运行结果为:

mvalue

delete()方法删除数据

php

$m = new Memcached();
$m->addServer('127.0.0.1',11211);
$m->set('mkey','mvalue',600);
/*根据key删除数据*/
$m->delete('mkey');
echo $m->get('mkey');

结果输出为空

flush()方法

该方法会清空memcached中的所有缓存,谨慎使用

php

$m = new Memcached();
$m->addServer('127.0.0.1',11211);
$m->flush();

increment()方法

对int型的数值进行加1或加任意值的操作。

php

$m = new Memcached();
$m->addServer('127.0.0.1',11211);
$m->set('num',5,0);
/*第一个参数为需要增加值的key,第二个参数为增加几*/
$m->increment('num',5);
echo $m->get('num');

运行结果为:

10

技巧:设置值以后,去掉$m->set('num',5,0);,即可以实现刷新一次加个5。

decrement()方法

对int型的数值进行减去任意值的操作。

php

$m = new Memcached();
$m->addServer('127.0.0.1',11211);
$m->set('num',5,0);
/*第一个参数为需要增加值的key,第二个参数为增加几*/
$m->decrement('num',5);
echo $m->get('num');

运行结果为:

0

优雅的使用Memcache

注以下方法只适用于Memcached,不适用于Memcache,关于两者的区别,已经发表过相关博文,本文不在细说。

setMulti — 存储多个元素



$m = new Memcached();
$m->addServer('127.0.0.1',11211);

/*一次性添加多条数据*/

$data = array(
            'key' => 'value',
            'key2' => 'value2',
        );

$m->setMulti($data,0);

/*一次性读取多个*/

$res = $m->getMulti(array('key','key2'));

print_r($res);

运行结果为

Array ( [key] => value [key2] => value2 )

Memcached::deleteMulti — 删除多个元素



$m = new Memcached();
$m->addServer('127.0.0.1',11211);

/*一次性添加多条数据*/

$data = array(
            'key' => 'value',
            'key2' => 'value2', 
        );

$m->setMulti($data,0);

/*一次性删除多个*/

$m->deleteMulti(array('key','key2'));

echo $m->get('key');

输出结果为空

Memcached::getResultCode — 返回最后一次操作的结果代码

$m->deleteMulti(array('key','key2'));
echo $m->getResultCode();

输出为0

00 = MEMCACHED_SUCCESS

01 = MEMCACHED_FAILURE

更多返回结果请参照http://php.net/manual/zh/memcached.getresultcode.php

Memcached::getResultMessage — 返回最后一次操作的结果描述消息

$m->deleteMulti(array('key','key2'));
echo $m->getResultMessage();

输出结果为:SUCCESS

上述只是简单介绍了一些常用的有关Memcache的操作。

如果想了解更多,可以到http://php.net/manual/zh/book.memcached.php

你可能感兴趣的:(Memcached,PHP学习历程)