设为首页 收藏本站
查看: 1384|回复: 0

[经验分享] php Memcached

[复制链接]

尚未签到

发表于 2015-11-19 07:16:25 | 显示全部楼层 |阅读模式
memcached帮助文档地址:http://us.php.net/manual/zh/book.memcached.php
Memcache 安装:
Do not lose your time to install it on Ubuntu just trying "sudo apt-get install php5-memcached". There is something you need to do that sure installing memcached. Anyway...

Step 1.
$ sudo apt-get install memcached
Step 2.
$ sudo apt-get install php5-memcached
Step 3.
$ sudo /etc/init.d/apache2 restart

Ready!

What about some test?

<?php
error_reporting(E_ALL & ~E_NOTICE);

$mc = new Memcached();
$mc->addServer(&quot;localhost&quot;,11211);

$mc->set(&quot;foo&quot;,&quot;Hello!&quot;);
$mc->set(&quot;bar&quot;,&quot;Memcached...&quot;);

$arr = array(
    $mc->get(&quot;foo&quot;),
    $mc->get(&quot;bar&quot;)
);
var_dump($arr);
?>



php实现:
1 用Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT
实例:
$memcache = new Memcached();


$memcache->setOption(Memcached::OPT_DISTRIBUTION,Memcached::DISTRIBUTION_CONSISTENT);
$memcache->setOption(Memcached::OPT_LIBKETAMA_COMPATIBLE,true);


$servers = array(
    array('127.0.0.1', 11211, 33),
    array('127.0.0.1', 11212, 67)
);
$memcache->addServers($servers);


$items = array(
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
);
$memcache->setMulti($items);


$result = $memcache->getMulti(array('key1', 'key2', 'key3'), $cas);
var_dump($result, $cas);



2 修改memcached的配置
vim /etc/php5/cli/conf.d/memcached.ini
进行设置后为:
; uncomment the next line to enable the module
extension=memcached.so
[memcached]
memcached.hash_strategy=consistent
memcached.hash_function=crc32


you can get the list of the possible options for the memcached.ini configuration file here:
https://github.com/php-memcached-dev/php-memcached/blob/master/memcached.ini

  
预定义常量:
下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。
Memcached::OPT_COMPRESSION开启或关闭压缩功能。当开启的时候,item的&#20540;超过某个阈&#20540;(当前是100bytes)时,会首先对&#20540;进行压缩然后存储,并 在获取该&#20540;时进行解压缩然后返回,使得压缩对应用层透明。
类型: boolean, 默认: TRUE.
Memcached::OPT_SERIALIZER指定对于非标量&#20540;进行序列化的序列化工具。可用的&#20540;有Memcached::SERIALIZER_PHPMemcached::SERIALIZER_IGBINARY。后者仅在memcached配置时开启 --enable-memcached-igbinary选项并且 igbinary扩展被加载时才有效。
类型: integer, 默认: Memcached::SERIALIZER_PHP.
Memcached::SERIALIZER_PHP默认的PHP序列化工具(即serialize方法)。
Memcached::SERIALIZER_IGBINARY» igbinary序列化工具。它将php的数据结构 存储为紧密的二进制形式,在时间和空间上都有所改进。
Memcached::SERIALIZER_JSONJSON序列化,需要 PHP 5.2.10以上。
Memcached::OPT_PREFIX_KEY可以用于为key创建“域”。这个&#20540;将会被作为每个key的前缀,它不能长于128个字符, 并且将会缩短最大可允许的key的长度。这个前缀仅仅用于被存储的元素的key,而不会用于服务器key。
类型: string, 默认: &quot;&quot;.
Memcached::OPT_HASH指定存储元素key使用的hash算法。可用的&#20540;是Memcached::HASH_*系列的常量。 每种hash算法都有它的优势和劣势,在你不了解或不确定哪种算法对你更有利时,请使用默认&#20540;。
类型: integer, 默认: Memcached::HASH_DEFAULT
Memcached::HASH_DEFAULT默认的(Jenkins one-at-a-time)元素key hash算法
Memcached::HASH_MD5md5元素key hash算法。
Memcached::HASH_CRCCRC元素key hash算法。
Memcached::HASH_FNV1_64FNV1_64元素key hash算法。
Memcached::HASH_FNV1A_64FNV1_64A元素key hash算法。
Memcached::HASH_FNV1_32FNV1_32元素key hash算法。
Memcached::HASH_FNV1A_32FNV1_32A元素key hash算法。
Memcached::HASH_HSIEHHsieh元素key hash算法。
Memcached::HASH_MURMURMurmur元素key hash算法。
Memcached::OPT_DISTRIBUTION指定元素key分布到各个服务器的方法。当前支持的方法有余数分步法合一致性hash算法两种。一致性hash算法提供 了更好的分配策略并且在添加服务器到集群时可以最小化缓存丢失。
类型: integer, 默认: Memcached::DISTRIBUTION_MODULA.
Memcached::DISTRIBUTION_MODULA余数分布算法。
Memcached::DISTRIBUTION_CONSISTENT一致性分布算法(基于libketama).
Memcached::OPT_LIBKETAMA_COMPATIBLE开启或关闭兼容的libketama类行为。当开启此选项后,元素key的hash算法将会被设置为md5并且分布算法将会 采用带有权重的一致性hash分布。这一点非常有用因为其他基于libketama的客户端(比如python,urby)在同样 的服务端配置下可以透明的访问key。
  Note:
如果你要使用一致性hash算法强烈建议开启此选项,并且这个选项可能在未来的发布版中被设置为默认开启。
类型: boolean, 默认: FALSE.
Memcached::OPT_BUFFER_WRITES开启或关闭I/O缓存。开启I/O缓存会导致存储命令不实际发送而是存储到缓冲区中。任意的检索数据操作都会导致 缓存中的数据被发送到远程服务端。退出连接或关闭连接也会导致缓存数据被发送到远程服务端。
类型: boolean, 默认: FALSE.
Memcached::OPT_BINARY_PROTOCOL开启使用二进制协议。请注意这个选项不能在一个打开的连接上进行切换。
类型: boolean, 默认: FALSE.
Memcached::OPT_NO_BLOCK开启或关闭异步I/O。这将使得存储函数传输速度最大化。
类型: boolean, 默认: FALSE.
Memcached::OPT_TCP_NODELAY开启或关闭已连接socket的无延迟特性(在某些幻境可能会带来速度上的提升)。
类型: boolean, 默认: FALSE.
Memcached::OPT_SOCKET_SEND_SIZEsocket发送缓冲的最大&#20540;。
类型: integer, 默认: 根据不同的平台/内核配置不同
Memcached::OPT_SOCKET_RECV_SIZEsocket接收缓冲的最大&#20540;。
类型: integer, 默认: 根据不同的平台/内核配置不同
Memcached::OPT_CONNECT_TIMEOUT在非阻塞模式下这里设置的&#20540;就是socket连接的超时时间,单位是毫秒。
类型: integer, 默认: 1000.
Memcached::OPT_RETRY_TIMEOUT等待失败的连接重试的时间,单位秒。
类型: integer, 默认: 0.
Memcached::OPT_SEND_TIMEOUTsocket发送超时时间,单位毫秒。在这种情况下您不能使用非阻塞I/O,这将使得您仍然有数据会发送超时。
类型: integer, 默认: 0.
Memcached::OPT_RECV_TIMEOUTsocket读取超时时间,单位毫秒。在这种情况下您不能使用非阻塞I/O,这将使得您仍然有数据会读取超时。
类型: integer, 默认: 0.
Memcached::OPT_POLL_TIMEOUTpoll连接超时时间,单位毫秒。
类型: integer, 默认: 1000.
Memcached::OPT_CACHE_LOOKUPS开启或禁用DNS查找缓存。
类型: boolean, 默认: FALSE.
Memcached::OPT_SERVER_FAILURE_LIMIT指定一个服务器连接的失败重试次数限制。在达到此数量的失败重连后此服务器将被从服务器池中移除。
类型: integer, 默认: 0.
Memcached::HAVE_IGBINARY指示是否支持igbinary的序列化。
类型: boolean.
Memcached::HAVE_JSON指示是否支持json的序列化。
类型: boolean.
Memcached::GET_PRESERVE_ORDER一个用于Memcached::getMulti()和 Memcached::getMultiByKey()的标记用以确保返回的key和请求的key顺序保持一致。不存在的key将会得到一个NULL&#20540;。
Memcached::RES_SUCCESS操作成功。
Memcached::RES_FAILURE某种方式的操作失败。
Memcached::RES_HOST_LOOKUP_FAILUREDNS查找失败。
Memcached::RES_UNKNOWN_READ_FAILURE读取网络数据失败。
Memcached::RES_PROTOCOL_ERROR错误的memcached协议命令。
Memcached::RES_CLIENT_ERROR客户端错误。
Memcached::RES_SERVER_ERROR服务端错误。
Memcached::RES_WRITE_FAILURE向网络写数据失败。
Memcached::RES_DATA_EXISTS比较并交换&#20540;操作失败(cas方法):尝试向服务端存储数据时由于自此连接最后一次取此key对应数据之后被改变导致失败。
Memcached::RES_NOTSTORED元素没有被存储,但并不是因为一个错误。这通常表明add(元素已存在)或replace(元素不存在)方式存储数据失败或者元素已经在一个删除序列中(延时删除)。
Memcached::RES_NOTFOUND元素未找到(通过get或cas操作时)。
Memcached::RES_PARTIAL_READ局部网络数据读错误。
Memcached::RES_SOME_ERRORS在多key获取的时候发生错误。
Memcached::RES_NO_SERVERS服务器池空。
Memcached::RES_END结果集到结尾了。
Memcached::RES_ERRNO系统错误。
Memcached::RES_BUFFERED操作被缓存。
Memcached::RES_TIMEOUT操作超时。
Memcached::RES_BAD_KEY_PROVIDED提供了无效的key。
Memcached::RES_CONNECTION_SOCKET_CREATE_FAILURE创建网络socket失败。
Memcached::RES_PAYLOAD_FAILURE不能压缩/解压缩或序列化/反序列化&#20540;。
         版权声明:本文为博主原创文章,未经博主允许不得转载。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-140855-1-1.html 上篇帖子: Memcached服务器安装 下篇帖子: Nginx+Tomcat7(tomcat6)+Memcached集群Session共享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表