将新数据插入内存缓存数组


Insert new data into a memcached array

我正在尝试在memcached中存储一个数组。并且会有新的数据需要附加到我以前存储的数组中。

下面是代码示例:

$lastDay = $MC->get('LastDayTopics');
$lastDay[] = $newTopic;
$MC->set('LastDayTopics', $lastDay );

如果两个客户端同时执行此代码怎么办?在我的场景中,它们都从memcached获取数组,并在另一个客户端设置新数组之前加载$lastDay。因此,最终,其中一个新数据将不会存储在memcached中。它将被销毁而不被存储。

有没有办法解决这个问题?

  • 您必须使用额外的锁定,例如:http://bluxte.net/musings/2009/10/28/simple-distributed-lock-memcached

  • 你也可以用另一个支持原子更新/推送的数据库来解决这个问题,比如redis或mongodb。