我正在尝试在memcached中存储一个数组。并且需要将新数据附加到我之前存储的数组中。
以下是代码示例:
$lastDay = $MC->get('LastDayTopics');
$lastDay[] = $newTopic;
$MC->set('LastDayTopics', $lastDay );
如果两个客户端同时执行此代码怎么办? 在我的场景中,他们都从memcached获取数组并在另一个客户端设置新数组之前加载$ lastDay。所以最后,其中一个新数据不会存储在memcached中。它将被销毁而不被存储。
有什么方法可以解决这个问题吗?
答案 0 :(得分:2)
您必须使用其他锁定,例如:http://bluxte.net/musings/2009/10/28/simple-distributed-lock-memcached
您也可以使用另一个支持redis或mongodb等原子更新/推送的数据库解决此问题。