0

我正在尝试在我的网站中实现 memcached。

我有一个图像库,其中图像很少更改(删除等)。它们保存在数据库中。

现在我知道我可以缓存 mysql 返回的结果集,并且每次请求查看图库时,它都会从那里检查缓存以查看它是否存在,并提供它而不是一次又一次地访问数据库。

我的问题是,如何使用这样的 memcached 比 mysql 的查询缓存更好,因为两者都是从内存中服务的?

此外,将 html 字符串存储在 memcached 中用于网站页眉和页脚等内容会稍微提高性能吗?我认为这意味着服务器不需要从磁盘加载数据。

4

1 回答 1

1

MySQL 查询缓存在将其用作有效的对象级缓存系统时有两个很大的限制。

  1. 只要表被更新(例如UPDATE、INSERT 或DELETE),表的缓存就会失效。

  2. 查询缓存不能存在于不同的实例中,因此如果您在这种规模下运行,查询缓存几乎没有什么好处。

另一个需要注意的点(这对某些人来说可能很明显)是查询缓存只缓存确定性查询的结果——使用日期函数或任何类似的东西都会导致数据库命中。

IMO,Memcached 的主要用例是它提供内存对象缓存,可以随您的应用程序扩展。部署也如此简单,这使得部署为数据层的缓存非常棒。

在您的特定情况下,它似乎不保证使用 memcached,因为您指定您的数据不会发生太大变化;在我看来,它似乎没有超出使用多个数据库服务器的扩展范围。

有关 MySQL 查询缓存的限制和特性的更详尽列表,请查看此内容。

于 2013-05-20T10:05:10.943 回答