首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >memcache和MySQL是如何工作的?

memcache和MySQL是如何工作的?
EN

Stack Overflow用户
提问于 2012-04-13 12:50:20
回答 3查看 30K关注 0票数 22

我正在尝试理解(可能还会部署)我们环境中的memcached。

我们在负载均衡器上有4个web服务器,运行一个用PHP开发的大型web应用程序。我们已经在使用APC了。我想看看memcached是如何工作的?至少,我可能不理解缓存是如何工作的。

我们有一些复杂的动态查询,它们组合了几个表来拉取数据。每一次,数据都将来自不同的客户端数据库,并且数据不断变化。根据我的理解,如果一些数据存储在缓存中,如果下一次请求是相同的,则返回相同的数据。(或者我在这里可能完全错了)。

整个memcache是如何工作的(或者任何缓存的东西是如何工作的)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-13 13:09:10

一般来说,缓存是一个非常快的键/值存储引擎,您可以在其中按预定的键存储值(通常是序列化的),因此您可以按相同的键检索存储的值。

对于MySQL,您将以这样一种方式编写应用程序代码,即在向数据库发出请求之前检查缓存中是否存在数据。如果找到匹配项(存在匹配键),则可以访问与该键关联的数据。如果可以避免,目标是不向成本更高的数据库发出请求。

下面是一个示例(仅供参考):

代码语言:javascript
复制
$cache = new Memcached();

$cache->addServer('servername', 11211);

$myCacheKey = 'my_cache_key';

$row = $cache->get($myCacheKey);

if (!$row) {

    // Issue painful query to mysql
    $sql = "SELECT * FROM table WHERE id = :id";

    $dbo->prepare($sql);
    $stmt->bindValue(':id', $someId, PDO::PARAM_INT);

    $row = $stmt->fetch(PDO::FETCH_OBJ);

    $cache->set($myCacheKey, serialize($row));
}

// Now I have access to $row, where I can do what I need to
// And for subsequent calls, the data will be pulled from cache and skip
// the query altogether
var_dump(unserialize($row));

有关更多信息,请查看memcached上的PHP文档,其中有一些很好的示例和注释。

票数 26
EN

Stack Overflow用户

发布于 2012-04-13 12:55:02

这里有几个关于memcache如何工作的例子。Here是其中一个链接。

其次,Memcache可以使用或不使用MySQL。

它缓存你在PHP中的对象,现在不管它是来自MySQL,还是其他任何地方,如果它是PHP对象,它可以存储在MemCache中。

APC为您提供了比Memcache更多的功能。除了存储/缓存PHP对象之外,它还缓存PHP可执行计算机可读操作码,以便您的PHP文件不会经历加载到内存中的过程->被压缩,而是直接从内存中运行已编译的操作码。

票数 1
EN

Stack Overflow用户

发布于 2012-04-13 14:37:45

如果你的数据一直在变化(在请求之间),那么缓存就是徒劳的,因为这些数据会变得陈旧。但大多数时候(我敢打赌,甚至在你的缓存中)对数据库的多次请求会导致相同的数据集,在这种情况下,缓存(在内存中)是非常有用的。

附言:我做了一个快速的谷歌搜索,找到了这个关于memcached的视频,它有相当好的质量=> http://www.bestechvideos.com/2009/03/21/railslab-scaling-rails-episode-8-memcached。唯一的问题可能是它谈到了Ruby On Rails(我也不经常使用它,但它很容易理解)。希望它能帮助你更好地理解这个概念。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10135391

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档