Heim  >  Artikel  >  Backend-Entwicklung  >  So verwenden Sie Memcached-Befehle in PHP

So verwenden Sie Memcached-Befehle in PHP

小云云
小云云Original
2018-03-27 09:33:283545Durchsuche

In diesem Artikel erklärt Pigmastiff Ihnen, wie Sie den Memcached-Befehl in PHP verwenden, und gibt eine Zusammenfassung, die hoffentlich allen helfen kann.

Portal: http://www.php.net/manual/zh/book.memcached.php
Unter Windows gibt es keine Memcached-Erweiterung, nur die Memcache-Erweiterung. Persönlicher Test, es gibt immer noch einen großen Unterschied zwischen den beiden. Es wird daher empfohlen, dies unter Linux zu tun.

<?php    $mem = new Memcached();    //添加一台服务器资源
    $mem->addServer(&#39;127.0.0.1&#39;, &#39;11211&#39;);    //添加多台,分布式存储,第三个参数为权重值
    /*
            $servers = array(
            array(&#39;127.0.0.1&#39;, 11211, 33),
            array(&#39;127.0.0.2&#39;, 11211, 67),
        );
        $res = $mem->addServers($servers);

    */

    //设置:键  值  过期时间(秒)
    $mem->set(&#39;name&#39;, &#39;huangyuxin&#39;, 5);    //注意:最大生命周期可设置为60*60*24*30 三十天的时间 
    //再往后的话要加上时间戳 time()+60*60*24*31(三十一天)

    //获取值
    $value = $mem->get(&#39;name&#39;);    //添加值,如果存在此键,false
    $result = $mem->add(&#39;name&#39;,&#39;zhangsan&#39;);    //追加: 键 值 ,追加在一个已经存在的值得后面,不存在也为false
    //setOption 这一句必须加上,不然追加不上
    //prepend 前面追加
    //如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了。
    $mem->setOption(Memcached::OPT_COMPRESSION, false);    $mem->append(&#39;name&#39;,&#39;haha&#39;);    $value = $mem->get(&#39;name&#39;);    //这个是减掉元素的值,两个参数,第二个参数决定减掉数值几,默认是 1 ,increment 是加
    $mem->set(&#39;age&#39;, 12, 30);    $mem->decrement(&#39;age&#39;);    $mem->decrement(&#39;age&#39;,2);    $value = $mem->get(&#39;age&#39;);    //删除元素
    $mem->delete(&#39;age&#39;);    $mem->delete(&#39;age&#39;,60);    /*
    注意:
        服务端在这段时间拒绝对这个key的add和replace命令. 
        由于这个时间段的存在, 元素被放入一个删除队列
        表明它不可以通过get命令获取到值
        但是同时 add和replace命令也从服务端内存删除
    (表明元素会被立即删除并且之后对这个 key的存储命令也会成功)
*/

    //删除多个
    $mem->add(&#39;age&#39;, 12, 60);    $mem->add(&#39;name&#39;, &#39;huangyuxin&#39;, 60);    $res = $mem->deleteMulti(array(&#39;age&#39;,&#39;name&#39;));    //作废 :flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。
    $mem->flush(10);//10秒内清除元素

    //获取所有键
    $mem->getAllKeys();    /*
        Memcached::getDelayed()向Memcached服务端发出一个检索
        keys指定的多个 key对应元素的请求。这个方法不会等待响应而
        是立即返回。当你需要收集元素值时, 调Memcached::fetch()
        或 Memcached::fetchAll()。如果with_cas设置为true,会
        同时请求每个元素的CAS标记。
    */
    $m->set(&#39;int&#39;, 99);    $m->set(&#39;array&#39;, array(11, 12));    $m->getDelayed(array(&#39;int&#39;, &#39;array&#39;), true);
    var_dump($m->fetchAll());    //获取多个值的信息
    $mem->set(&#39;age&#39;, 12, 60);    $mem->set(&#39;name&#39;, &#39;huangyuxin&#39;, 60);    $res = $mem->getMulti(array(&#39;age&#39;, &#39;name&#39;));    //设置多个键
    $items = array(    &#39;key1&#39; => &#39;value1&#39;,    &#39;key2&#39; => &#39;value2&#39;,    &#39;key3&#39; => &#39;value3&#39;,
);    $mem->setMulti($items);    $res = $mem->get(&#39;key1&#39;);//value

    //返回系统常量
    var_dump($mem->getOption(Memcached::OPT_COMPRESSION));    //返回最后一次操作的结果描述消息
    $mem->add(&#39;a&#39;, &#39;bar&#39;); // first time should succeed
    echo $mem->getResultMessage(), "\n"; //SUCCESS

    //查看此key在哪个服务器上
    $mem->add(&#39;a&#39;, &#39;bar&#39;); // first time should succeed
    $res = $mem->getServerByKey(&#39;a&#39;);    //array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["weight"]=> int(0) } 

    //返回服务器列表
    var_dump($mem->getServerList());    //返回服务器状态
    var_dump($mem->getServerList());    //服务器版本
    print_r($mem->getVersion());    //判断是否是持久链接
    $res = $mem->isPersistent();    //Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。
    $m->set(&#39;hh&#39;, &#39;aaaa&#39;);    $m->replace(&#39;hh&#39;, &#39;bbbb&#39;);    $res = $m->get(&#39;hh&#39;);    //删除从已知的服务器列表中的所有缓存服务器,重置回空。
    $mem->resetServerList();    //对某一key重新设置生命周期
    $m->set(&#39;aaaa&#39;, &#39;aaaa&#39;, 600);    $m->touch(&#39;aaaa&#39;, 5);    $value= $m->get(&#39;aaaa&#39;);    //关闭打开的链接
    $m->quit();

    var_dump($value);

Das folgende Suffix ist ByKey, das im Allgemeinen von mehreren Memcached-Servern verwendet wird. Wenn Sie die oben genannten Befehle beherrschen, werden Sie sie grundsätzlich unten verwenden.

touch->touchByKey
setMulti->setMultiByKey
getMulti->getMultiBykey
replace->replaceByKey
append->appendByKey
prepend->prependByKey
getServerByKey
getdelay->getDelayedByKey 
increment->incrementByKey
decrement->decrementByKey
add->addByKey
get->getByKey
delete->deleteMultiByKey
$m->addByKey(&#39;指定服务器&#39;,&#39;键&#39;,"值")

Mehr zu warten als Maßnahmen zu ergreifen, bedeutet, darauf zu warten, zu sterben.

Portal: http://www.php.net/manual/zh/book.memcached.php
Unter Windows gibt es keine Memcached-Erweiterung, nur die Memcache-Erweiterung. Persönlicher Test, es gibt immer noch einen großen Unterschied zwischen den beiden. Es wird daher empfohlen, dies unter Linux zu tun.

<?php    $mem = new Memcached();    //添加一台服务器资源
    $mem->addServer(&#39;127.0.0.1&#39;, &#39;11211&#39;);    //添加多台,分布式存储,第三个参数为权重值
    /*
            $servers = array(
            array(&#39;127.0.0.1&#39;, 11211, 33),
            array(&#39;127.0.0.2&#39;, 11211, 67),
        );
        $res = $mem->addServers($servers);

    */

    //设置:键  值  过期时间(秒)
    $mem->set(&#39;name&#39;, &#39;huangyuxin&#39;, 5);    //注意:最大生命周期可设置为60*60*24*30 三十天的时间 
    //再往后的话要加上时间戳 time()+60*60*24*31(三十一天)

    //获取值
    $value = $mem->get(&#39;name&#39;);    //添加值,如果存在此键,false
    $result = $mem->add(&#39;name&#39;,&#39;zhangsan&#39;);    //追加: 键 值 ,追加在一个已经存在的值得后面,不存在也为false
    //setOption 这一句必须加上,不然追加不上
    //prepend 前面追加
    //如果Memcached::OPT_COMPRESSION常量开启,这个操作会失败,并引发一个警告,因为向压缩数据 后追加数据可能会导致解压不了。
    $mem->setOption(Memcached::OPT_COMPRESSION, false);    $mem->append(&#39;name&#39;,&#39;haha&#39;);    $value = $mem->get(&#39;name&#39;);    //这个是减掉元素的值,两个参数,第二个参数决定减掉数值几,默认是 1 ,increment 是加
    $mem->set(&#39;age&#39;, 12, 30);    $mem->decrement(&#39;age&#39;);    $mem->decrement(&#39;age&#39;,2);    $value = $mem->get(&#39;age&#39;);    //删除元素
    $mem->delete(&#39;age&#39;);    $mem->delete(&#39;age&#39;,60);    /*
    注意:
        服务端在这段时间拒绝对这个key的add和replace命令. 
        由于这个时间段的存在, 元素被放入一个删除队列
        表明它不可以通过get命令获取到值
        但是同时 add和replace命令也从服务端内存删除
    (表明元素会被立即删除并且之后对这个 key的存储命令也会成功)
*/

    //删除多个
    $mem->add(&#39;age&#39;, 12, 60);    $mem->add(&#39;name&#39;, &#39;huangyuxin&#39;, 60);    $res = $mem->deleteMulti(array(&#39;age&#39;,&#39;name&#39;));    //作废 :flush不会 真正的释放已有元素的内存, 而是逐渐的存入新元素重用那些内存。
    $mem->flush(10);//10秒内清除元素

    //获取所有键
    $mem->getAllKeys();    /*
        Memcached::getDelayed()向Memcached服务端发出一个检索
        keys指定的多个 key对应元素的请求。这个方法不会等待响应而
        是立即返回。当你需要收集元素值时, 调Memcached::fetch()
        或 Memcached::fetchAll()。如果with_cas设置为true,会
        同时请求每个元素的CAS标记。
    */
    $m->set(&#39;int&#39;, 99);    $m->set(&#39;array&#39;, array(11, 12));    $m->getDelayed(array(&#39;int&#39;, &#39;array&#39;), true);
    var_dump($m->fetchAll());    //获取多个值的信息
    $mem->set(&#39;age&#39;, 12, 60);    $mem->set(&#39;name&#39;, &#39;huangyuxin&#39;, 60);    $res = $mem->getMulti(array(&#39;age&#39;, &#39;name&#39;));    //设置多个键
    $items = array(    &#39;key1&#39; => &#39;value1&#39;,    &#39;key2&#39; => &#39;value2&#39;,    &#39;key3&#39; => &#39;value3&#39;,
);    $mem->setMulti($items);    $res = $mem->get(&#39;key1&#39;);//value

    //返回系统常量
    var_dump($mem->getOption(Memcached::OPT_COMPRESSION));    //返回最后一次操作的结果描述消息
    $mem->add(&#39;a&#39;, &#39;bar&#39;); // first time should succeed
    echo $mem->getResultMessage(), "\n"; //SUCCESS

    //查看此key在哪个服务器上
    $mem->add(&#39;a&#39;, &#39;bar&#39;); // first time should succeed
    $res = $mem->getServerByKey(&#39;a&#39;);    //array(3) { ["host"]=> string(9) "127.0.0.1" ["port"]=> int(11211) ["weight"]=> int(0) } 

    //返回服务器列表
    var_dump($mem->getServerList());    //返回服务器状态
    var_dump($mem->getServerList());    //服务器版本
    print_r($mem->getVersion());    //判断是否是持久链接
    $res = $mem->isPersistent();    //Memcached::replace()和Memcached::set()类似,但是如果 服务端不存在key, 操作将失败。
    $m->set(&#39;hh&#39;, &#39;aaaa&#39;);    $m->replace(&#39;hh&#39;, &#39;bbbb&#39;);    $res = $m->get(&#39;hh&#39;);    //删除从已知的服务器列表中的所有缓存服务器,重置回空。
    $mem->resetServerList();    //对某一key重新设置生命周期
    $m->set(&#39;aaaa&#39;, &#39;aaaa&#39;, 600);    $m->touch(&#39;aaaa&#39;, 5);    $value= $m->get(&#39;aaaa&#39;);    //关闭打开的链接
    $m->quit();

    var_dump($value);

Das folgende Suffix ist ByKey, das im Allgemeinen von mehreren Memcached-Servern verwendet wird. Wenn Sie die oben genannten Befehle beherrschen, werden Sie sie grundsätzlich unten verwenden.

touch->touchByKey
setMulti->setMultiByKey
getMulti->getMultiBykey
replace->replaceByKey
append->appendByKey
prepend->prependByKey
getServerByKey
getdelay->getDelayedByKey 
increment->incrementByKey
decrement->decrementByKey
add->addByKey
get->getByKey
delete->deleteMultiByKey
$m->addByKey(&#39;指定服务器&#39;,&#39;键&#39;,"值")

Verwandte Empfehlungen:

So installieren Sie die Memcached-Dienstmethode unter Linux

Installations- und Konfigurationsmethode von Ubuntu Memcached in PHP

Memcached-Beispiel für die PHP-Speicher-Caching-Funktion

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Memcached-Befehle in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn