【问题标题】:How to create a dynamic cache system with PHP and Mysql? [closed]如何用 PHP 和 Mysql 创建动态缓存系统? [关闭]
【发布时间】:2017-02-03 20:11:36
【问题描述】:

我有一个像 google play 这样的原生应用商店,我需要更快地加载应用详细信息,我不想选择和加入表格来创建应用详细信息,我需要一个动态缓存系统,其中 android 应用调用我的网络服务,web服务不要从数据库实例中选择从缓存中选择,你有什么想法吗?注意:加载应用细节的速度非常重要,你知道谷歌使用什么机制来完成这项工作吗?

如何保持缓存更新?

【问题讨论】:

  • 为什么您认为再次询问完全相同的问题会得到对your previous question 的任何不同响应?
  • @mark-baker 我用当前我想要的内容编辑我自己的问题。
  • 使用“糟糕的缓存”,创建一个包含格式化数据的 html 文件,然后在需要的地方包含它,如果它不到 5 分钟,否则执行长选择并重新创建缓存.重复。

标签: php mysql database caching


【解决方案1】:

我将创建一个返回您正在寻找的信息的查询。 MySQL 会自动缓存经常执行的查询结果。如果您的查询很慢,那么您可能需要重构您的数据库,或重写您的查询。

如果您需要除此之外的任何内容,我会先将MySQL Query Results Cache Plugin 安装到您的服务器。

[摘录]

有四种方法可以触发查询缓存。

  • 基于每个查询使用 SQL 提示
  • 用户提供的回调以根据每个查询做出决定,例如,使用 mysqlnd_qc_is_select()
  • mysqlnd_set_cache_condition() 用于基于规则的自动每个查询决策
  • mysqlnd_qc.cache_by_default = 1 盲目缓存所有查询

设置自动缓存规则。

SQL 提示是符合 SQL 标准的注释。作为 SQL 注释,它被数据库忽略。如果一个语句以启用缓存的 SQL 提示开头或者它是一个 SELECT 语句,则该语句被认为符合缓存条件。

应缓存的单个查询必须以 SQL 提示 /qc=on/ 开头。建议使用 PHP 常量 MYSQLND_QC_ENABLE_SWITCH 而不是使用字符串值。

  • 不符合缓存条件且未缓存:INSERT INTO test(id) VALUES (1)

  • 不符合缓存条件且未缓存:SHOW ENGINES

  • 符合缓存条件但未缓存:SELECT id FROM test

  • 有资格缓存和缓存:/qc=on/SELECT id FROM test

示例 SELECT 语句字符串以 MYSQLND_QC_ENABLE_SWITCH SQL 提示为前缀,以启用语句缓存。 SQL 提示必须在语句字符串的最开头给出以启用缓存。

【讨论】:

  • “MySQL 和 PHP 将自动缓存查询” – 嗯,好吧,只有在您安装和配置 mysqlnd_qc 时。 默认情况下不会缓存任何内容.
  • MySQL 自动缓存 SELECT 查询结果供以后查看dev.mysql.com/doc/refman/5.7/en/query-cache.html
  • 是的,但是您在答案中引用的巨大部分需要显式安装和配置插件......
  • 啊,是的。感谢您指出这一点
  • 仅供参考 MySQL 文档现在声明:查询缓存自 MySQL 5.7.20 起已弃用,并在 MySQL 8.0 中删除。
猜你喜欢
  • 2019-08-17
  • 2011-07-06
  • 1970-01-01
  • 2015-10-02
  • 2011-08-30
  • 2017-12-12
  • 2012-05-28
  • 2010-09-14
  • 2012-07-04
相关资源
最近更新 更多