PHP和分布式Memcache的遇到数据不一致问题

原创 2012年08月07日 10:51:27

这几天做某个产品的时候遇到一个小问题,现象比较诡异

产品用了两台分布式的memcached服务器

某一个计数器取回来的数偶尔会不对,最后定位在php memcache client的failover机制上面。

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

如果php.ini里面 memcache.allow_failover = 1的时候,在分布式环境下,某一台memcached出问题的话,会自动到其他的memcached尝试

就会出现上面的问题,原因如下:

这个key是hash到服务器A的,但是服务器A正好一瞬间连不上(网络或者其他问题),PHP就会去另一台服务器B去尝试。

经过很偶然发生的网络问题和很多次increment操作,有可能两台服务器上面都有这个key,而且值不一样……

get的时候有可能取到不同的值

如果对数据一致性要求很严格的话,可以关掉这个参数 memcache.allow_failover = 0,

或者在php 代码里设置ini_set('memcache.allow_failover', 0); 嗯,问题解决

版权声明:本文为博主原创文章,未经博主允许不得转载。

memcache与mysql数据库同步

http://www.cnblogs.com/zhanghw0354/archive/2012/10/23/2735599.html Good Heavens me...
  • newjueqi
  • newjueqi
  • 2012年12月20日 16:50
  • 13674

php操作memcache缓存基础方法

  • wlzx120
  • wlzx120
  • 2016年08月29日 16:05
  • 2152

整理php操作memcache缓存基础方法

php操作memcache缓存方法分享 使用memcache的前提是需要在服务端先配置好memcahche的环境!确认memcahce可以正常连接之后就可以在程序使用了! ...
  • hello_katty
  • hello_katty
  • 2015年06月04日 08:54
  • 2324

分布式memcache实现web集群session同步

php的session默认是文件存储: session.save_handler = files session.save_path = "/var/lib/php/session" 当做we...
  • nuli888
  • nuli888
  • 2016年08月04日 20:23
  • 665

分布式锁实现方式三 基干Memcache mutex设计模式

分布式锁实现方式三 Memcache mutex设计模式 应用场景 上周六去参加了csdn举办的TUP活动,最后一场的Tim Yang讲的《微博cache设计谈》,个人觉得讲得非常好和非常到位,其中...
  • huwei2003
  • huwei2003
  • 2017年01月20日 17:08
  • 565

基本函数Memcache中文手册——《Memcache中文手册》 php版

PHP操作Memcache基本函数 Memcache模块提供了于Memcached方便的面向过程及面向对象的接口,Memcached是为了降低动态web应用从数据库加载数据而产生的一种常驻进程缓存...
  • qq_36427770
  • qq_36427770
  • 2017年02月22日 13:57
  • 1035

memcache 的内存管理介绍和 php实现memcache一致性哈希分布式算法

1 网络IO模型        安装memcached需要先安装libevent   Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接...
  • lashou_tech
  • lashou_tech
  • 2016年07月23日 15:26
  • 1706

PHP环境下Memcache的使用方法

原文地址:http://www.nowamagic.net/librarys/veda/detail/332 如今互联网崛起的时代,各大网站都面临着一个大数据流问题,怎么提高网站访问速度,减少对数据...
  • u010097616
  • u010097616
  • 2016年09月13日 14:35
  • 8760

php操作memcache的使用测试总结

1.简介 memcache模块是一个高效的守护进程,提供用于内存缓存的过程式程序和面向对象的方便的接口,特别是对于设计动态web程序时减少对数据库的访问。 memcache也提供用于通信对话(se...
  • luyaran
  • luyaran
  • 2016年09月20日 11:57
  • 414

linux下安装配置Memcache和PHP环境

亲测有效 在网上查找了好多资料,很多都安装不成功,而且都是同一个资料相互抄袭泛蓝,没一个实用的。今天配置好了,将配置过程分享一下。 Linux下的Memcache运行需要libevent的支持,...
  • liuzp111
  • liuzp111
  • 2015年10月16日 11:02
  • 1051
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP和分布式Memcache的遇到数据不一致问题
举报原因:
原因补充:

(最多只允许输入30个字)