2010-11-03 70 views
0

我们使用的是PHP中的memcached。我一直在试图弄清楚为什么我们看到memcached似乎没有更新的一些问题。你能想到为什么调用memcache-> replace()不会实际更新对象的任何原因吗?我们只是在数组类型对象上调用memcache-> replace()。该数组包含大量数据,但我认为我们不会超过1MB上限。失败似乎间歇发生。大多数情况下,它的工作原理是偶尔的,但它对我们来说并不重要。另外,memcached是同步执行还是异步?如果它是异步的,这里可能会出现竞争状态。Memcached替换不工作

回答

0

我相信memcache客户端是同步的,但复制是异步的,所以如果您使用复制,可能在复制完成之前,值正在写入一台服务器并从另一台服务器读取。如果您正在使用复制,请参阅是否可以在不复制的情况下重现该错误。

0

为什么使用replace而不是setreplace左右的语义允许它失败,如果你不覆盖数据 - 特别是没有数据,只是一些数据。

如果要覆盖特定的数据,请使用cas。如果您只想存储数据,请使用set