2013-02-21 38 views
0

我必須對160K左右的記錄進行查找,其中數據的形式爲 id,我們需要獲取給定的行值在range1和range2的範圍內,所以到目前爲止它在我們使用的查詢之間。內存中的緩存和數據庫之間的選擇,任何其他內存中的選項php

我昨天開始使用memcache,它發現對於給定值的特定行是否存在於memcache中,如果不是,則將它從db中放入memcache中。

我不確定在memcache本身查找的順序是什麼,是o(1)還是o(n),我知道dbsearch最多可以讓我o(log n),並且我正在考慮保留另一個層之間的一些其他內存中的對象[我現在無法想象,但我當然不想使用會話來保存表內存],而是從這個內存中獲取數據,內存對象,如果沒有找到它,那麼去數據庫。

PS - 我的數據庫表很難經歷任何改變。

所以我想的順序是 查找內存緩存中 如果沒有找到(查找在內存中 - 做陣列上的二進制搜索),並加入到內存緩存 如果沒有發現數據庫查找,添加到在內存中並添加到memcache中。

我是在正確的方向思考

回答

0

Memcached是非常快,查找是O(1),而不是O(N),所以你最好關閉只是使用Memcached和一些後端數據庫。考慮你上面提出的情況。在中間有一個比memcached慢的二級緩存只會增加請求的延遲,因爲你現在可能不得不要求3個地方提供一些數據而不是兩個。另外,由於memcached將比內存數據庫解決方案更快,所以最好將所有額外內存都存放到memcached中。要考慮的另一件事是爲您的應用程序添加額外層的管理開銷。

相關問題