缓存是业务层还是数据层的一部分在一个简单的 LAMP 堆栈中?
3 回答
memcached 不是简单的LAMP 堆栈的一部分。基本的 LAMP 应用程序直接从数据库中获取数据并将其模板化到视图中。简单的应用程序(甚至许多复杂的应用程序)不需要更多。
您将 memcached 添加到应用程序是因为您的数据计算速度太慢而无法实时完成。虽然 memcache 肯定算作数据层,但当您依赖 memcache 时,您会失去数据库服务器的一致性,这意味着您通常需要包含一些特定于应用程序的规则,以根据应用程序的业务逻辑。可以肯定的是,它会影响业务层。如果你正在缓存的东西是预填充的视图(例如 HTML),那么它也涉及到表示层。
这种范围广泛且不易封装的特性是为什么在真正需要之前不应该将 memcache 引入应用程序的原因。不要认为它是性能的必要基础;请记住,您的数据库还具有表和查询缓存,您可以利用这些缓存而不必放弃一致性并增加缓存到期的复杂性。
它是横切关注点,可应用于业务、数据或任何其他包含和使用数据的层中的每条数据。
Memcached 位于数据库和网络服务器之间。它是一个缓存,但更重要的是它是一个显式缓存。所以事情不会自行解决。你必须从中“投入”和“获得”。最大的优势是,它比数据库快近 10 倍。而且,如果您从 memcached 中获取数据,则不需要进行 sql 调用,从而为您的数据库节省一些周期来做更重要的事情。
因此,图书目录网站是 80% 读取和 20% 写入的理想候选者。欲了解更多信息<这里>。