我最近熟悉memcached。那给我提出了一些严重的问题。 假设我有一个新闻Web应用程序。显然,最昂贵的工作是发送准备好的查询以从数据库中获取任何新闻内容。 通过假设数据库本身缓存新闻内容和查询计划,使用单独的缓存服务器有什么好处?
更多应用细节(虚构):
===如果使用缓存服务器===
我知道像memcached这样的缓存服务器实际上使您拥有96GB的聚合缓存。但是另一方面,从Web服务器域到缓存服务器域至少应该有一些额外的请求。
我对客户提出的每个请求都需要经过的路径的理解如下:
如果使用缓存服务器:
Web服务器=>缓存服务器==缓存服务器内部是否存在数据? =>
如果不使用缓存服务器:
Web服务器=>数据库服务器=> Web服务器=>客户端
如果Web服务器和DB服务器都放在同一台计算机上怎么办?这样我们将拥有: 网络服务器=>客户端
所以我的主要问题是:
答案 0 :(得分:0)
首先,使用缓存来提高系统的性能。缓存和数据库之间的区别主要是 存储在数据库中的数据将保留在磁盘上,而在缓存中则将其存储在RAM中。因为从RAM访问数据比从磁盘访问数据更快。
像MySQL这样的一些数据库是内置缓存的,但是它也没有什么问题,例如,如果对表进行任何更新(例如插入,删除和更新),存储在MySQL缓存中的数据将自动被删除。
如果您仅要缓存几MB的数据,也不需要为缓存保留其他服务器。一些缓存系统,例如Memcached和Redis,您可以为缓存分配内存大小。如果缓存达到内存限制,则将根据我们配置的驱逐策略删除已存在的数据。另外,我们不仅使用缓存来缓存数据库查询结果,而且还可以缓存一些使用配置设置,而不是每次都从文件中读取它。