2016-03-24 116 views
1

我收到一個電子商務網站,有多達100萬個產品,該網站在很多地區。每個產品頁面對DB有大約10-15個查詢,例如通過url獲取產品,獲取產品類別以及獲取產品格式等。Currenly使用laravel基於文件的緩存和im不在產品頁面上緩存任何內容。Laravel緩存大量查詢

問題是產品頁面也是各種爬蟲/機器人的目標,意味着對數據庫進行大量查詢。同樣,如果我將產品頁面緩存爲1小時,那麼在那些機器人鎖定所有頁面的時間內,它不太可能會在這段時間內被擊中。也因爲我有不同的地區(不同的領域),這意味着頁面的數量是由區域數量(5-10)定時的。

所以我不知道如何緩存這個。我想過要永久緩存所有這些查詢(沒有時間限制),並在產品發生變化時更改緩存。這是要走的路嗎? laravel是否爲正在緩存的每個查詢創建一個緩存文件?如果是,那麼文件數量可能會成爲問題。

另外我想過使用redis。但是當我緩存許多密鑰時,我想我會耗盡內存。任何想法我應該如何緩存這個?提前致謝。

編輯1:

關於使用redis進行html緩存的想法。所以我會緩存例如產品價格和它的HTML。任何IDE我需要多少內存緩存允許說一千點二千萬個鍵與一些HTML作爲他們的價值?

+0

您可以使用redis。 – nextt1

回答

0

一些緩存的想法。 memcache所有的查詢。繼續添加更多的服務器,直到您有足夠的內存來緩存所有查詢。

獲得4個更多的VPS並將每個放置mysql並使用所有可用內存進行查詢緩存。使用分片(而不是主從)將某些產品的請求路由到某些機器。繼續添加機器,直到將所有數據保存在查詢緩存中

重寫系統,以便它不需要緩存以可接受的速度運行。當用於更大的吞吐量時,緩存效果最好,而不是提高速度。