2016-09-26 30 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