当前位置:首页 > CN2资讯 > 正文内容

php memcached缓存集群php memcached

1天前CN2资讯


一、需求描述

一linode xen vps 1G RAM,40+sites,IO频繁,openfiles ulimit已65535

US时间访问量大增,nginx不定时502

二、解决办法

pages cache化,但这一台vps内存不够用,于是把闲置的几台服务器都装上memcached做缓存集群

再根据网络延迟设定权重

memcached server官方: http://memcached.org/

三、代码

访问memcached server需要php支持,可以选择memcached库和memcache库,注意2者名字的区别

详细对比:​​https:///p/memcached/wiki/PHPClientComparison​​

我采用的是php memcache: ​​http://php.net/manual/en/book.memcache.php​​ 因为memcache不依赖libmemcached


1 2 3 4 5 6 7 8 9 10 11

​​//集群数组​​​​$memserver​​​​ = ​​​​array​​​​(​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​'fast1.xxx.com'​​​​ , ​​​​'port'​​​​ => 13579 , ​​​​'weight'​​​​ => 40 ),​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​'fast2.xxx.com'​​​​ , ​​​​'port'​​​​ => 13579 , ​​​​'weight'​​​​ => 20 ),​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​'fast3.xxx.com'​​​​ , ​​​​'port'​​​​ => 13579 , ​​​​'weight'​​​​ => 20 ),​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​'slow1.xxx.com'​​​​ , ​​​​'port'​​​​ => 24680 , ​​​​'weight'​​​​ => 5 ),​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​'slow2.xxx.com'​​​​ , ​​​​'port'​​​​ => 24680 , ​​​​'weight'​​​​ => 5 ),​​​​​​​​array​​​​( ​​​​'host'​​​​ => ​​​​''​​​​ , ​​​​'port'​​​​ => 11211 , ​​​​'weight'​​​​ => 10 )​​​​);​​


键值读、写、删就没什么说的了直接按文档sample写即可

考虑到以后的移植问题,记得首先检测环境是否支持memcache: class_exists(‘Memcache’)

下面是我的实现,因为特定需求,几个函数写的相对独立,memcache也没做全局实例化。

你可以根据自己需求把memcache在全局实例化,优化操作。


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

​​//---get content from memcache---​​​​function​​​​ getCache( ​​​​$key​​​​ )​​​​{​​​​​​​​Global ​​​​$memserver​​​​;​​​​​​​​$ret​​​​ = false;​​​​​​​​$key​​​​ = md5( ​​​​$key​​​​ );​​​​​​​​$mc​​​​ = ​​​​new​​​​ Memcache();​​​​​​​​foreach​​​​ ( ​​​​$memserver​​​​ as​​​​ $s​​​​ )​​​​​​​​$mc​​​​->addServer( ​​​​$s​​​​[​​​​'host'​​​​], ​​​​$s​​​​[​​​​'port'​​​​], FALSE, ​​​​$s​​​​[​​​​'weight'​​​​] );​​​​​​​​$ret​​​​ = ​​​​$mc​​​​->get( ​​​​$key​​​​ );​​​​​​​​$mc​​​​->close();​​​​​​​​unset( ​​​​$mc​​​​ );​​​​​​​​return​​​​ $ret​​​​;​​​​}​​​​//---set content from memcache---​​​​function​​​​ setCache( ​​​​$key​​​​, ​​​​$val​​​​ )​​​​{​​​​​​​​Global ​​​​$memserver​​​​;​​​​​​​​$ret​​​​ = false;​​​​​​​​$key​​​​ = md5( ​​​​$key​​​​ );​​​​​​​​$mc​​​​ = ​​​​new​​​​ Memcache();​​​​​​​​foreach​​​​ ( ​​​​$memserver​​​​ as​​​​ $s​​​​ )​​​​​​​​$mc​​​​->addServer( ​​​​$s​​​​[​​​​'host'​​​​], ​​​​$s​​​​[​​​​'port'​​​​], FALSE, ​​​​$s​​​​[​​​​'weight'​​​​] );​​​​​​​​if​​​​( isset(​​​​$val​​​​[​​​​'cached'​​​​]) )​​​​​​​​{​​​​​​​​$val​​​​[​​​​'cached'​​​​] = 1;​​​​​​​​$ret​​​​ = ​​​​$mc​​​​->set( ​​​​$key​​​​ , ​​​​$val​​​​);​​​​​​​​}​​​​​​​​$mc​​​​->close();​​​​​​​​unset( ​​​​$mc​​​​ );​​​​​​​​return​​​​ $ret​​​​;​​​​}​​​​//---delete content from memcache---​​​​function​​​​ delCache( ​​​​$key​​​​ )​​​​{​​​​​​​​Global ​​​​$memserver​​​​;​​​​​​​​$ret​​​​ = false;​​​​​​​​$key​​​​ = md5( ​​​​$key​​​​ );​​​​​​​​$mc​​​​ = ​​​​new​​​​ Memcache();​​​​​​​​foreach​​​​ ( ​​​​$memserver​​​​ as​​​​ $s​​​​ )​​​​​​​​$mc​​​​->addServer( ​​​​$s​​​​[​​​​'host'​​​​], ​​​​$s​​​​[​​​​'port'​​​​], FALSE, ​​​​$s​​​​[​​​​'weight'​​​​] );​​​​​​​​$ret​​​​ = ​​​​$mc​​​​->​​​​delete​​​​( ​​​​$key​​​​ , 0);​​​​​​​​$mc​​​​->close();​​​​​​​​unset( ​​​​$mc​​​​ );​​​​​​​​return​​​​ $ret​​​​;​​​​}​​





    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/18705.html

    分享给朋友:

    “php memcached缓存集群php memcached” 的相关文章

    年抛域名的优势与续费注意事项,助您成功管理短期项目

    年抛域名是我在互联网世界中常遇到的一个概念,它们指的是那些注册时间为一年,使用者并不打算长期持有的域名。这类域名的价格往往比较低廉,非常适合一些短期项目或者测试用途。或许你有过这样的经历,想要尝试某个新项目,于是申请了一个年抛域名,一年后若不再需要,便无后顾之忧。这样的运作模式灵活高效,适合现代互联...

    检查自己的IP地址:全面掌握网络安全与故障排查技巧

    检查自己的IP地址的重要性 我常常感受到,了解自己的IP地址是使用互联网时不可或缺的一部分。无论是日常上网还是进行复杂的网络设置,IP地址都扮演着关键角色。所以,搞清楚自己的IP地址,真的非常重要。 那么,什么是IP地址呢?简单来说,IP地址是分配给每台连接到互联网设备的唯一标识符。它就像我们的家庭...

    提升美国家庭网络安全与光纤宽带普及的最佳策略

    在当今这个数字化时代,家庭网络的建设与发展显得愈发重要。美国家庭对于网络的依赖程度日渐加深,这不仅仅体现在上网购物、观看视频、游戏娱乐等日常活动中,也体现在工作和学习的方方面面。作为一个普通家庭,我们的生活节奏已经被网络所塑造,无论是为了保持与亲友的联系,还是获取最新的信息,都离不开一个稳定而高效的...

    香港云服务器:灵活选择与网络优势助力企业发展

    香港云服务器作为一种现代化的网络托管服务,逐渐成为越来越多企业和个人用户的首选。这种服务的核心就是将服务器放置在香港的数据中心,提供灵活的云计算资源。对于希望在云端运作的用户来说,了解香港云服务器的定义与特点是非常重要的。 首先,香港云服务器的产品类型多种多样,从轻量云主机到快杰云主机,再到裸金属服...

    选择合适的Linux SSH工具来提升远程管理效率

    在数字化时代,远程连接与管理变得尤为重要。SSH(Secure Shell)是一种网络协议,用于通过不安全的网络安全地访问计算机。SSH技术保障了数据的隐私和完整性,并通过加密通道进行通信。当我第一次接触SSH时,它对于在不同计算机之间安全地进行操作以及文件传输是多么重要,印象深刻。 SSH不仅仅是...

    选择最佳香港VPS大带宽服务的全面指南,助你无忧搭建在线业务

    在如今这个信息高速发展的时代,选择适合的VPS服务显得尤为重要。特别是香港VPS大带宽服务,以其独特的优势吸引了越来越多的用户。对于想要进行国际业务、网站托管或是搭建游戏服务器的用户来说,香港VPS大带宽服务绝对是个不错的选择。 香港VPS大带宽的优势显而易见。一个显著的特点是无需备案,这意味着用户...