gpt4 book ai didi

php - 使用 PHP 在 Memcached 中保存从数据库返回的巨大记录

转载 作者:行者123 更新时间:2023-11-30 23:07:16 24 4
gpt4 key购买 nike

我正在开发一个网站(使用 PHP + Memcache),用户可以在其中拥有 friend ,但在考虑保存拥有超过 10 万个 friend 的用户的 friend 列表时遇到了困难。假设,如果用户有 100,000 个 friend ,您将如何将他们保存在 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);

这会产生很多问题。

1) 首先是保存和检索如此庞大的数组时的内存问题和性能问题。

2) 不能在数组中保存超过 1mb

Einstein 有什么好的技巧可以将这些记录保存在 memcache 中吗?保存和检索此类列表的代码是什么?如果从 DB 返回如此庞大的记录,知道 Twitter 或 Facebook 将如何节省吗?

最佳答案

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

$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);

现在您有了一个使用 Sets 的好友列表。你也可以检查你有多少套。现在您可以使用 AJAX 并单独调用每个 Set,一组有 100 个 friend 。所以,现在你不必去数据库。但这同样不是一个完整的证明解决方案,但显示一切正常。

关于php - 使用 PHP 在 Memcached 中保存从数据库返回的巨大记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319737/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com