2013-10-18 57 views
2

我理解Memcache上的概念,但我有疑問。PHP中的基本Memcached實現

比方說:

我有一個表「用戶」與三列: 用戶ID 用戶名 和密碼。

可以說查詢是$ query =「select * from users」。這是第一次,查詢得到執行並作爲md5($ query) - >結果存儲在內存緩存中。

因此,當下次執行此查詢時,將執行$ query的md5散列。它匹配並從memcache中獲取結果。

但是如果我不得不從上面的查詢中選擇2個參數。

像$ query =選擇用戶名,密碼從用戶。

那我該怎麼做?理想情況下,我希望從與用戶選擇*相同的密鑰中獲取它,因爲'select * from users'的鍵對應於'select username,password from users'所需的所有數據。

我該如何處理這樣的問題?

回答

1

Memcache/PHP不知道你的數據庫的內部結構。如果您需要,您必須手動進行這種優化。

否則,如果需要這種智能緩存,mysql的查詢緩存可能更適合。

2

也許您應該將「用戶」結果存儲在未根據您選擇的標準更改的密鑰下。您已將整個用戶表存儲在密鑰md5中(「select * from users」)。所以你可以:

  1. 從內存緩存
  2. 獲取存儲的結果。這將返回您最初存儲的東西,即整個用戶表,其中包括用戶名和密碼。
  3. 然後使用此結果並僅使用您需要的數據的子集。
+0

正是我的想法,這一定是這個問題的答案。 –