2010-09-25 23 views
0

我有幾個用戶經常訪問的表。同一種查詢一次又一次地運行,這會在服務器上造成額外的負載。將SQL結果移植到memcached中

記錄不插入/更新頻繁,我想緩存ID添加到memcached中,然後從數據庫中獲取他們這會降低搜索的負擔/排序等

下面是一個例子

SELECT P.product_id FROM products P, product_category C WHERE P.cat_id=C.cat_id AND C.cat_name='Fashion' AND P.is_product_active=true AND C.is_cat_active=true ORDER BY P.product_date DESC 

上述查詢將返回將導入到memcached中的特定類別的所有產品id,然後模擬與mysql結果集相同的過程(即分頁)的其餘部分。

插入過程將使緩存過期或將產品ID插入到數組的第一行。

我的問題是這個實際應用?人們如何處理搜索,說明一個人是否在搜索一種能夠返回10000個結果的產品(實際上可能不可能),他們是否每次都搜索表格?有什麼好的memcached和mysql示例可以顯示如何完成這些任務?

回答

2

您可能會問自己,在插入/更新產品時是否確實需要使緩存失效。

通常一個產品列表可以接受5分鐘的緩存。

如果您的失效計劃僅基於時間(新條目將僅在5分鐘後出現),您可以使用memcache快速地使用&髒招:只需使用sql查詢字符串的md5作爲memcache鍵,並告訴memcache保持5分鐘的選擇結果。

我希望這將有助於你

+0

我也使用或替代,這也是更新的產品列表中即提出了新的產品。上述所有以前存儲的ID,這將再次查詢從數據庫保存骯髒的方式 – Maximus 2010-09-25 23:33:05