2016-09-26 104 views
-2

我有一个本地应用程序商店,如谷歌播放,我需要加载应用程序的细节更快,我不想选择和连接表来创建应用程序的详细信息,我需要一个动态缓存系统,Android应用程序调用我的Web服务, Web服务不从数据库实例中选择从缓存中选择,你有什么想法吗?注意:加载应用程序细节的速度非常重要,你知道谷歌使用什么机制来完成这项工作吗?如何用PHP和Mysql创建动态缓存系统?

如何始终保持缓存更新?

+1

为什么你认为再次询问完全一样会得到任何不同的回应[你的上一个问题](http:// stackoverflow。COM /问题/ 39703370 /如何到创建-A-动态高速缓存系统)? –

+0

@ mark-baker我编辑我自己的问题与目前我想要的。 –

+0

使用“穷人缓存”,创建一个包含格式化数据的html文件,然后在需要时包含该文件,如果该文件少于5分钟,则执行长选择并重新创建缓存。重复。 – Cups

回答

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测试(ID)VALUES(1)

  • 没有资格缓存和不缓存:SHOW ENGINES

  • 进行高速缓存,但是未缓存:SELECT ID FROM测试

  • 获缓存和高速缓存的:/ QC =上/SELECT ID FROM测试

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

+1

*“只有安装并配置mysqlnd_qc时,MySQL和PHP才会自动缓存查询”* - uhm,那么**默认情况下,任何内容都不会被缓存。 – deceze

+0

MySQL自动缓存SELECT查询结果供以后参考http://dev.mysql.com/doc/refman/5.7/en/query-cache.html –

+1

是的,但您在答案中引用的巨大部分需要明确的安装和配置一个插件... – deceze