当前位置:  开发笔记 > 编程语言 > 正文

缓存节点失败的数据不一致

如何解决《缓存节点失败的数据不一致》经验,为你挑选了0个好方法。

我遇到了一个问题,我的数据库中的数据正在恢复到旧状态.我想我已经把问题缩小到了这种情况.

想象一下两次购买的顺序如下:

所有缓存节点都在工作

用户登录(他们的数据从数据库中提取并存储在memcached中)

缓存节点关闭

用户继续浏览(因为它们的数据无法在缓存中找到,所以它从数据库中提取并存储在memcached中)

用户执行一些转换其记录的操作[例如升级](他们的记录在缓存和数据库中更新)

缓存节点重新启动

我们再次从缓存中提取用户的数据,它来自之前关闭的原始缓存节点

现在我们遇到了一个问题:缓存中的节点已经过时了!

用户进行另一个转换其记录的操作

这保存在缓存和数据库中,但由于它基于过时的记录,它会踩踏上一次更改并有效地还原它

我们现在丢失了数据,因为数据库记录被重写了部分过时的信息.

如何使用持久连接的PHP5和libmemcached来防止这种情况?我想我想要的是缓存节点根本不进行故障转移; 它应该只是无法读取和写入该节点,但不能从池中删除它,以便我不会得到重复的记录.

当节点出现故障时,这将使我的数据库上的负载增加1/n(其中n是缓存节点的总数),但最好是数据不一致.

不幸的是,我无法理解应该更改哪些设置以获得此行为.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有