如何用PHP和Mysql创建动态缓存系统?

时间:2016-09-26 13:00:26

标签: php mysql database caching

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

如何始终保持缓存更新?

1 个答案:

答案 0 :(得分: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提示以启用缓存。