gpt4 book ai didi

google-app-engine - 如何在社交网络环境中使用内存缓存?

转载 作者:行者123 更新时间:2023-12-04 17:54:30 25 4
gpt4 key购买 nike

我知道这是一个非常模糊的问题,但我正在寻找一个非常抽象的答案。自从我几个月前开始使用 GAE 以来,我一直认为 memcache 没有用处和不必要的麻烦,所以我一直不以为然,它真的没那么重要。但似乎 memcache 被称赞为一个非常有益的特性,Google 甚至说“高性能可扩展的 Web 应用程序通常在某些任务的稳健持久存储之前或代替稳健的持久存储使用分布式内存数据缓存。”,等等我认为这其中一定有值得研究的地方。

我只是不明白。它对性能有什么好处?首先你要检查memcache中是否有东西,如果没有,查询。我一直认为不必处理它会更快,并且无论如何都要查询,但这似乎是一种幼稚的方法?这有多大的不同?

我想我一直不明白的是 memcache 的用处。我可以看到它在 Stackoverflow 主页上的用处,所有用户几乎都看到了相同的东西,所以在这种情况下不使用 memcache 会很有用,实际上是愚蠢的。但是说像 Facebook 这样的社交网络。每个用户看到的东西都不一样。没有两个人看到相同的数据和内容,而且事情变化得如此之快以至于内存缓存可能需要不断更新。 memcache在这种情况下能起到什么作用?

另外,在社交网络这样的私有(private)网站中,如果每个用户都必须在memcache中存储不同的信息,那么memcache究竟能容纳多少呢?我知道 GAE 没有谈到其内存缓存的大小,那么存储数十万条记录是否安全?

最佳答案

您将内存缓存用于您可能经常需要的东西。检查内存缓存中是否有内容很快。从内存缓存中获取它很快。如果您可以避免自己进行查询,那么您就可以节省大量时间。

例如,考虑以下两种情况:

  • 有两个人请求您的主页。作为页面加载的一部分,这两个请求都会执行查询。
  • 有两个人请求您的主页。两者都检查缓存;一个执行查询并存储它,另一个获取缓存的结果。

从内存缓存中获取(或存储)内容的大概时间约为 2-3 毫秒。从数据库中获取内容的大概时间为 100 毫秒。

因此对于第一种情况,您总共有 100 毫秒 x2 = 200 毫秒。

在第二种情况下,总共有 3 毫秒(查找失败)+ 100 毫秒(查询)+ 3 毫秒(存储)+ 3 毫秒(成功查找)= 109 毫秒。

您总共节省了将近 50%。

现在假设可能有 10 个人请求您的主页。在第一种情况下,每增加一个人就是另外 100 毫秒。第二种情况下每个人只有3ms。


另请注意,您不必一次将整个页面存储在内存缓存中。您也可以存储页面的部分。当然,并非所有用户都拥有完全相同的数据,但肯定有一些东西是他们之间共享的。

关于google-app-engine - 如何在社交网络环境中使用内存缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13061371/

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