Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP在Memcache中保存数据库返回的巨大记录_Php_Mysql_Arrays_Facebook_Memcached - Fatal编程技术网

用PHP在Memcache中保存数据库返回的巨大记录

用PHP在Memcache中保存数据库返回的巨大记录,php,mysql,arrays,facebook,memcached,Php,Mysql,Arrays,Facebook,Memcached,我正在开发一个网站(使用PHP+Memcache),在这个网站上,用户可以有朋友,并且在考虑保存一个拥有超过10万个朋友的用户的朋友列表时陷入了困境。假设,若用户有10万个朋友,你们将如何将他们保存在Memcache中?目前我有这个代码 $ttl = count($result); //about 10K friends for($i=0; $i<$ttl; $i++) { $friendslist[$result[$i][0]] = $result[$i]; //$result[

我正在开发一个网站(使用PHP+Memcache),在这个网站上,用户可以有朋友,并且在考虑保存一个拥有超过10万个朋友的用户的朋友列表时陷入了困境。假设,若用户有10万个朋友,你们将如何将他们保存在Memcache中?目前我有这个代码

$ttl = count($result); //about 10K friends
for($i=0; $i<$ttl; $i++)
{
    $friendslist[$result[$i][0]] = $result[$i]; //$result[$i][0] = Friend's ID
}

$mem->set($usrid,$friendslist);
$ttl=count($result)//大约一万个朋友

对于($i=0;$i首先,我建议您不要将如此庞大的记录保存在单个数组中,而是像分页一样从数据库调用所需的朋友列表。但如果您仍然需要它,那么我不确定这是否是正确的方法,但您可以尝试一下

$ttlsets = count($result)/1000; //100K = 100 sets

for($i=0; $i<$ttlsets; $i++)
{
    $friendslist = array();
    for($j=0; $j<100; $j++)
    {
       $friendslist[$result[$i][0]] = $result[$i]; //$result[$i][0] = Friend's ID
    }
    $mem->set($usrid.'set'.$i, $friendslist);
}

$mem->set($usrid.'counter', $ttlsets);
$ttlsets=count($result)/1000;//100K=100套

对于($i=0;$i为什么你不只是一次添加或删除一个朋友。用户是否真的需要将十万个全新ID作为朋友粘贴到一个请求中?为什么你需要在memecahce中存储这么多朋友?这似乎不是一个合适的解决方案。正如其他人所说,这似乎是一个问题。为什么o您需要存储用户的所有朋友?您永远不需要一次加载所有10万个朋友。您需要按照Facebook的做法做一些事情,即延迟加载他们(例如使用JavaScript)随需应变。问题是,当用户检查他的朋友列表时,如果我不将列表保存在Memcache中,我就必须从DB中获取列表,这就是问题所在。这就是我一直在寻找的。我尝试了一下,效果很好。虽然我不得不为AJAX编写一些其他代码,但Memcache集很棒