2016-07-25 73 views
0

我正在使用memcached來存儲php網站的全局狀態。存儲的數據需要被來自任何登錄用戶的請求訪問。有沒有在memcached中保證對象永久性的方法?

我知道,如果memcached得到滿了,它只會轉儲最舊的對象。在這種情況下可以使用一些回退技術嗎?

或者,忽略memcached。什麼是在不借助MySQL的情況下在PHP中存儲全局狀態的更快方式?

+0

好奇你不願意使用MySQL嗎? – bnxio

+0

只是想加快速度。我存儲的所有數據都是按9個數組排列的每個用戶的元組{'userid','state1','state2','state3}。 –

回答

0

您可以在會話中存儲爲JSON。您也可以使用Redis(而不是memcached)和PHP並設置最大內存使用量。

+0

Redis似乎是一個不錯的選擇,謝謝。關於會議,是不是每個用戶,即不是全球? –

+0

是的,會話是每個用戶。對於全球性的東西,請使用Redis。 – Eric

0

你的問題就像問一個問題,如何長時間保持記憶。

如果舊項目已滿並且您將其他項目添加到其中,則Memcache將刪除舊項目。應用程序的工作方式應該是,當緩存返回null或由於某種原因而被禁用時,應該激活將某些項放入緩存的過程。 soemthing這樣的: 1-讀取從高速緩存 2-項目,如果該項目不是null 3-返回的項目 4-讀取從數據庫的產品(或任何其它源) 5-放項在高速緩存 6-返回項目

緩存不是一個永久性內存,您的應用程序應該設計成即使沒有現金也能工作。

但是,因爲它是應用程序狀態,所以對該項目的調用可能很高,不會進入隊列末尾。 雖然這不是一個好方法,但您也可以創建一個服務來從緩存中獲取該項目,以防止它進入隊列末尾。