2

我試圖修改留言簿示例webapp以減少數據庫寫入的數量。使用memcache限制寫入數據庫的數量

我想實現的是將所有留言條目加載到我所做的memcache中。

但是我希望能夠直接用新的留言簿條目更新memcache,然後將所有更改以批量放入。()每30秒寫入一次。

有沒有人有我如何實現上述的例子?它真的會幫助我!

謝謝:)

+1

你是第二個問到最近這樣的事情。我認爲有一些糟糕的優化課程正在進行。您應該避免進行單個放入,並嘗試儘可能批量放入,但不要將要再次看到的數據放入memcache中,而不要先將其寫入數據存儲區。 – Calvin 2011-03-07 20:31:18

回答

6

這是丟失數據的處方。我很難相信一本留言簿導致足夠的寫作活動成爲一個問題。此外,涉及此的簿記將是棘手的,因爲memcache不可搜索。

2

你想實現什麼叫做Write-Behind Caching,通常情況下,實施正確的方式並不是那麼容易,因爲它看起來很簡單。就我現在所知,Memcached/GAE在Python中沒有現成的解決方案,但你可以看看Stockpyle。它具有Write-Through Caching的一些基本功能(請參閱appengine.py和memcache.py),因此它可以作爲您自己的解決方案的基礎。

1

Memcache是​​如此易變的存儲來存儲有價值的數據,如留言簿條目;請記住,例如,如果內存不足,memcache數據可能會被驅逐。

如果您的留言板流量很高,而且您正在忍受寫入數據存儲區超時/爭用,請嘗試使用另一種方法,使用限速taskqueue來減慢寫入數據存儲區的次數。

  1. 讓用戶編譯留言簿條目
  2. 通行證通過deferred庫中的每個數據輸入到速率限制的任務隊列
  3. 寫入的數據存儲

你可以放鬆的寫入數據存儲的定義低在您的queue.yaml中執行如下類似的匯率執行:

queue: 
- name: relaxed-write 
    rate: 1/s 
    bucket_size: 1 

每秒寫一次,您可能會收到一些零星的超時錯誤;在這種情況下,任務將再次執行直到成功。