我目前正在从事类似于电子商务网站的项目。数据库表中有数十万条记录。我还必须对它们使用连接操作来获取数据,因为项目中有查询生成器来选择数据标准。获取数据需要太多时间。所以,我使用限制作为每页的一些记录(例如 10)。现在我开始了解memcached的概念。所以我想在我的项目中使用 memcached,因为它只需要花费太多时间。但仍有一些疑问。
- 太多缓存文件会影响吗?我的意思是会创建太多文件,每个模块的每一页,都会有一个缓存文件。所以数字将进入大约 10000 个缓存文件。
- 让我们假设没有任何文件数量的问题。但是,当在表格中间添加或删除表格的任何行时,如何使用 replace() 来更新文件。在这里,几乎每周都会更新表格。
所以我进退两难,我是否应该选择 Memcached?如果有人可以提出建议并解释并回答,那么将不胜感激。
最佳答案
如果您的网站执行许多经常返回相同数据的相同 MySQL 查询,那么是的,运行 memcached 可能有一些好处。
问题:
"There are hundreds of thousands of records...It takes too much time to fetch the data".
这可能表明您的架构存在问题。正确索引,即使在使用 JOIN 时,查询也应该能够快速执行(< 0.1 秒)。对运行时间较长的查询运行 EXPLAIN
查询,看看是否可以改进。
问题 1 的答案
缓存文件太多不会有问题。 Memcached 将所有缓存信息存储在内存中(因此得名),因此不使用磁盘文件。缓存的对象存储在 RAM 中并直接从 RAM 访问。
问题 2 的答案
不确定您在这里问什么,但是如果您的应用程序更新或删除数据库中的信息,那么删除受更新和删除影响的缓存项至关重要。如果应用程序不删除受此类操作影响的缓存项,则下次查询数据时,可能会返回不再有效的缓存结果。确保缓存的任何数据都设置了适当的过期时间,或者应用程序在数据库中的数据发生变化时将它们从缓存中删除。
希望对您有所帮助。
关于php - 在全动态和重数据库网站中使用memcached好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852976/