1
假設我有一些緩存了30秒的東西,產生緩存的數據庫請求需要2s,我每秒獲得100個請求,緩存需要刷新時會發生什麼?Memcache配置過期時間
我懷疑我的db命中了200次。我想要發生的是讓第一個通過,但然後告訴其他人回到緩存,所以基本上在30秒後第一次嘗試緩存時沒有說什麼,但是剩下的部分會在之前得到以前的內容通過更新它的人。
我是否必須在應用程序級別上執行此操作,或者可以將memcache配置爲執行此操作?
假設我有一些緩存了30秒的東西,產生緩存的數據庫請求需要2s,我每秒獲得100個請求,緩存需要刷新時會發生什麼?Memcache配置過期時間
我懷疑我的db命中了200次。我想要發生的是讓第一個通過,但然後告訴其他人回到緩存,所以基本上在30秒後第一次嘗試緩存時沒有說什麼,但是剩下的部分會在之前得到以前的內容通過更新它的人。
我是否必須在應用程序級別上執行此操作,或者可以將memcache配置爲執行此操作?
您將需要在您的應用程序中構建此邏輯。當在memcached中找不到該項目時,只需從數據庫中取回該項目,然後在緩存中創建一個新項目。項目過期後,您需要重新緩存數據庫中的項目。
[ get item from cache ] ----- yes
| |
no [ return item ]
|
|
[ get item from database ] -- yes
| |
no [ store item in cache ]
| |
[ return not found ] [ return item ]
噓!我剛剛進行了臺式測試,並且可以在緩存命中之間看到大量的db命中。我在應用程序中處理它的方式是有兩種緩存 - 一種是30秒,一種是60秒。如果三十分鐘內沒有命中,可以打到db並提高'命中60'的標誌。當數據庫返回刷新30和60緩存和更低的標誌。假設沒有數據庫請求不超過30秒,應該只在緩存之間命中一次。如果你可以配置memcache的生命週期就意味着在x秒內不返回任何東西,那將會很好。 –