文档章节

php memcache与php memcached区别及相关问题

i
 iturtle
发布于 2014/11/14 13:15
字数 807
阅读 8
收藏 0


1. Php memcache的问题

1.1 分布式问题

php memcache默认会自动切换实例,所以有时取到老数据,并且value飘忽不定。

网友分享的问题:

这几天做某个产品的时候遇到一个小问题,现象比较诡异,产品用了两台分布式的memcached服务器。某一个计数器取回来的数偶尔会不对,最后定位在php memcache client的failover机制上面。

我们知道,在memcached分布式环境下,某一个key是通过hash计算,分配到某一个memcached上面的。

如果php.ini里面 memcache.allow_failover = 1的时候,在分布式环境下,某一台memcached出问题的话,会自动到其他的memcached尝试,就会出现上面的问题。所以要设置 allow_failover = 0 那么取不到时就直接返回失败而不会从其它mc上取,这样以避免网络异常或server端异常时,经常切换实例,会取到老数据。


1.2 高并发下稳定性问题

新浪微博提到的教训:

php memcache换成php memcached,在高并发下稳定下极大提高;

另外功能更多,出错码更精确。


Twitter的缓存经验

多层次Cache,减轻某些cache节点宕掉后的影响,读写都cache;

将memcached api统一换为libmemcached(方便多语言访问memcached,让分布式等各种规则都一致。)


1.3 1秒超时间隔没法修改问题

php memcache客户端有个1秒超时间隔没法修改问题:

bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )

第三个参数本来可设置timeout,单位秒,但无法修改。

测试了以下三种修改timeout的方法都无效:

1.3.1. 用memcache api Memcache::setServerParams不能修改;

1.3.2. 改memcache 源代码vi php_memcache.h宏定义不能修改;

1.3.3. php.ini内这个配置:default_socket_timeout = 60对本timeout无效。


2. memcache和memcached对比

Php memcache这个老客户端在属性设置方面可设置的很少;

出错码粒度很粗,出错后难以定位;

而且功能欠缺一些:

There are primarily two clients used with PHP. One is the older, more widespread pecl/memcache and the other is the newer, less used, more feature rich pecl/memcached.

Both support the basics such as multiple servers, setting vaules, getting values, increment, decrement and getting stats.


Here are some more advanced features and information.

项目              pecl/memcache       pecl/memcached
First Release Date      2004-06-08      2009-01-29 (beta)
Actively Developed      Yes             Yes
External Dependency     None            libmemcached
Automatic Key Fixup1    Yes             No
Append/Prepend          No              Yes
Automatic Serialzation2 Yes             Yes
Binary Protocol         No              Optional
CAS                     No              Yes
Compression             Yes             Yes
Communication Timeout   Connect Only    Various Options
Consistent Hashing      Yes             Yes
Delayed Get             No              Yes
Multi-Get               Yes             Yes
Session Support         Yes             Yes
Set/Get to a specific server    No          Yes
Stores Numerics         Converted to Strings    Yes

注释:

1 pecl/memcache will convert an invalid key into a valid key for you. pecl/memcached will return false when trying to set/get a key that is not valid.

2 You do not have to serialize your objects or arrays before sending them to the set commands. Both clients will do


转载请注明出处:http://www.ttlsa.com/html/2467.html


© 著作权归作者所有

共有 人打赏支持
i
粉丝 0
博文 54
码字总数 13891
作品 0
广州
私信 提问
关于memcache的一些知识

Mencached、memcached、memcache的区别: 区分开三种写法来帮你理解。Memcached、memcached、memcache。 其中首字母大写的Memcached,指的是Memcached服务器,就是独立运行Memcached的后台服...

kobe52099
2018/06/26
0
0
Windows7 x64在Wampserver上安装memcache

Windows7 x64在Wampserver上安装memcache 放假重装了一下系统,win7 x64的,而我使用的win下的开发环境也升级到了最新版,所集成的是php5.3.13,一切很顺利,但是在安装php的memcache扩展的时...

真座山雕
2012/10/30
0
0
Memcached-1.4.4-14 For Win32 or Win64

注意:以下相关软件是以2015-03-23日能找到的最新的版本为基础提供的教程 一、下载并安装memcached服务器端软件 这个就好比mysql数据库,必须安装mysql服务器端软件。 1、下载服务端memcach...

lixiaokai2008
2015/03/23
0
0
php扩展memcached编译安装

memcache是一个开源、高性能对象缓存系统的项目名,作为服务端,它的守护进程名称是memcached。 官网:http://memcached.org PHP有两个memcache客户端:php memcache和php memcached。这两个...

hiwill
2016/06/15
121
0
php模块memcache和memcached区别分析

谈及php搭配memcached使用,已经是老生常谈的问题。但是有一些细节,不见得人人清楚。比如说php的模块memcache和memcached有什么区别等。下面我就简单介绍一下。 1.目前大多数php环境里使用的...

lixiaokai2008
2013/07/06
0
1

没有更多内容

加载失败,请刷新页面

加载更多

nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
1
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
1
0
推荐转载连接

https://www.cnblogs.com/ysocean/p/7409779.html#_label0

小橙子的曼曼
昨天
3
0
雷军亲自打造的套餐了解下:用多少付多少

12月28日消息,小米科技创始人兼CEO雷军微博表示,小米移动任我行套餐方案,原则上就是明明白白消费,用多少付多少,不用不花钱!上网、电话和短信都是一毛钱,上网0.1元/M,电话0.1元/分钟,...

linuxCool
昨天
6
0
协议简史:如何学习网络协议?

大学时,学到网络协议的7层模型时,老师教了大家一个顺口溜:物数网传会表应。并说这是重点,年年必考,5分的题目摆在这里,你们爱背不背。 考试的时候,果然遇到这个问题,搜索枯肠,只能想...

Java干货分享
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部