2012-02-16 43 views
0

我想使用緩存機制來幫助提高PHP應用程序的性能,並將它看作是一個不錯的選擇。然後看着它,我發現一個更一般的問題與緩存...創建記錄緩存的最佳方式(在本例中爲Memcache)

但我看到的問題是,如果在例子中,我只是簡單地使用SQL語句作爲緩存結果的哈希鍵,然後有一個可能出現重複記錄的情況。如果SQL A將獲取記錄1,2,4並且SQL B將獲取記錄2,3和6,則會發生這種情況。在這種情況下,記錄2將在兩個結果集中。如果我簡單地檢索記錄,然後鏈接到相同的記錄 - 我沒有真正獲得任何性能提升,並且可能會減慢應用程序的速度。

其他人一定會遇到這個 - 所以我不知道有什麼人會建議,以更好的方式管理緩存。或者它是簡單的不去緩存,並總是依賴於數據庫?

謝謝。

回答

2

爲什麼還要擔心呢?重點是查詢被緩存。如果兩個不同查詢的結果部分重疊,那就這樣吧。除非這些結果的大小超過許多兆字節,因此佔用大量空間,否則無關緊要。重要的是如果你想再次運行相同的查詢,你不需要,因爲結果已經被緩存了。

+0

這很有道理 - 雖然它提示了一個新問題。如果我從SQL A更改記錄2,是否應該使SQL B的緩存無效?如果不是,則SQL B中的值將過期。或者,如果我更新任何記錄,這是否升級?我是否扔掉了所有緩存的結果? – 2012-02-16 13:00:33

+0

這就是它涉及到緩存策略的細節的地方,它更高效。對於不經常更新,只需在更新時清理整個緩存就可以了。對於熱門網站的頻繁更新,每隔x分鐘清理整個緩存可能是有意義的,因此整個網站在x分鐘內似乎是靜態的。等等,有很多可能的策略。 – deceze 2012-02-16 23:01:41

相關問題